본문 바로가기

프로그래밍/네트워크

(10)
[네트워크] network layer - Data Plane(Router) 1 네트워크 계층의 역할 ? 송신 호스트에서 수신 호스트로 패킷을 전달하는 것이다. 이를 위한 두 가지 중요 기능을 알아야 한다. forwarding and routing fowarding(전달) : 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 보내야한다. 라우터의 입력 링크에서 출력 링크로 어덯게 패킷을 전달하는지 Routing : 패킷을 전송할 때 패킷 경로를 결정해야한다. 이러한 경로를 계산하는 알고리즘을 routing algorithm 이라 한다. 둘이 비슷해 보이지만 포워딩은 라우터 입력 링크에서 적당한 출력 링크로 전송하는 내부적인 동작. 라우팅은 전반적인 경로를 결정하는것이다. network layer : data plane, control plane Data..
네트워크 (8) - 웹 캐싱(Web caching,proxy server) client 가 서버에 멀리 있다면 응답속도나 많은 점에서 단점이 존재한다. 우리는 그 문제를 해결하기 위하여 proxy server를 활용하고, 오늘은 이에 대해 알아보자. web cache client가 멀리 있는 origin server까지 가지 않고 가까운 proxy server의 web caches 파일에 접근하여 원하는 파일을 받아오는 기술이다. - client가 proxy server에 접근해 caches file이 있는지 본다. => caches가 있으면 proxy server에서 데이터를 받아온다. => caches가 없으면 proxy server는 origin server로부터 데이터를 요청하여 받아온다. 받은 데이터는 proxy server에 저장된다. 그리고 client에게 데이터를..
네트워크(7) - 쿠키 ( Cookie ) 우리가 인터넷을 사용하면 쿠키를 통해 정보가 저장되거나 혹은 쿠키를 삭제하는 일을 한번씩 겪어봤을 것이다. 오늘은 이 쿠키에 대해 다뤄볼 것이다. Cookie? 앞서 우리는 저번 포스트에서 Http 에 대해 많은 것을 다뤘다. 큰 특징 중 하나에 대해 기억해보자면 http는 stateless 하여 유저의 어떠한 정보도 기억하지 않는다는 것이었다. 좋은 점도 물론 있겠지만, 이에 대한 단점으로는 user의 id나 정보를 읽을 수 없다. 그래서 콘텐츠 제공, 차단 등과 같은 서비스를 제공하지 못한다. 그래서 우리는 state를 저장하고 있는 쿠키를 사용한다. 이 덕분에 사용자 정보를 읽어와 사용자 식별, 콘텐츠 제공등이 가능하게 된다. Cookie의 네가지 요소 일단 아래의 그림을 보자 일단 쿠키 기술은 네..
네트워크(6) - Web and HTTP 1990년대 초, 새로운 애플리케이션인 world wide web(www)이 등장했다. 웹의 등장으로 이전과 다르게 사용자들은 그들이 원할 떄 원하는것을 수신할 수 있게 되었다. 이를 on-demand 방식이라 하는데 이것은 라디오 처럼 제공자의 시간에 우리가 주파수를 맞추어야 하는것과 다르다. HTTP는 웹의 애플리케이션 계층 프로토콜이다. 이 덕분에 우리는 웹 페이지를 자유롭게 식별가능하게 되었다. 다시말해, HTTP는 클라이언트가 웹 서버에게 웹 페이지를 어떻게 요청하는지와 서버가 클라이언트로 어떻게 웹 페이지를 전송하는지 정의한다. 이번글은 이에 대해 알아보도록 할 것이다. HTTP 우리가 주소를 검색할때 생략하는 http는 웹에서 사용되는 web application layer protocol ..
네트워크(5) - 인터넷 전송 프로토콜이 제공하는 서비스(TCP, UDP) 인터넷이 제공하는 애플리케이션 지원 유형을 살펴보자. 인터넷을 포함해서 많은 네트워크는 하나 이상의 트랜스포트 프로토콜을 제공한다. 애플리케이션을 개발할 때는 사용 가능한 트랜스포트 프로토콜 중에서 하나를 선택해야 한다. 인터넷은 애플리케이션에게 2개의 전송 프로토콜을 제공한다. TCP UDP 개발자가 새로운 인터넷 애플리케이션을 만들 때 가장 먼저 결정해야 하는 것 중 하나는 UDP와 TCP 중 어느 것을 사용할 것인가이다. 이 둘이 애플리케이션들에게 제공할 수 있는 서비스는 무엇인가? 가능한 서비스들을 넓은 범위에서 신뢰적 데이터 전송,처리율,시간,보안 이라는 네가지 차원으로 분류할 수 있다. 신뢰적 데이터 전송( data integrity ) 패킷(전송되는 데이터) 들은 네트워크 내에서 손실될 수 ..
네트워크(4) - 프로세스 간 통신(Processes Communicating) 이번 글에서는 프로세스 간에 어떻게 통신을 하는가에 대해 알아보자. 알아보기 전 운영체제에서 배우는 프로그램, 프로세스에 대해 한 번 짚고 넘어가보자. 프로그램이란 우리가 일반적으로 생각하는 프로그램이 맞다. 카카오톡도 프로그램이고 워드 엑셀 역시 프로그램이다. 프로세스란 호스트 내에서 돌아가고 있는 프로그램이다. 같은 호스트 내에서 복수개의 프로세스가 돌아갈 수 있는데, 두 개의 프로세스가 내부적으로 통신이 가능하다. 전에 배웠던 client-server 구조는 server는 데이터를 제공하기 위해, client 는 데이터를 받기 위해 둘의 프로세스가 다르다. P2P 구조는 서버 모듈 클라이언트 모듈 모두 가지고 있다. 다른 호스트들에 있는 프로스세와는 메세지 교환을 통해 통신이 가능한데 소켓(Sock..
네트워크 (3) - client-server, P2P(peer to peer) 저번 우리는 네트워크 구조에 대해 알아보았다. 이번에는 애플리케이션 구조에 대해 알아보자. 애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고 해당 애플리케이션에 특정 서비스 집합을 제공한다. 그러나 애플리케이션 구조는 개발자가 설계하며, 이들이 다양한 종단 시스템에서 어떻게 조직 되어야 하는지 알려준다. 개발자는 현재 두 가지 잘 알려진 구조 client-server P2P(peer-to-peer) 구조 중 하나로 작성할 것이다. Client-server 는 항상 켜져 있는 호스트를 Server로 이 서비스는 client의 요청을 받는다. ( 비대칭적 ) 따라서 클라이언트끼리 직접적으로 소통하지 않는다. 그렇기에 반드시 server를 통해 데이터를 주고 받는다. 항시 운영이 되어야 하기 때문에 ..
네트워크(2) - internet protocol layers 글을 시작하기전에 우리들의 컴퓨터를 생각해보자. 만약 일체형 컴퓨터를 사용한다면, 모니터와 본체가 붙어있다. 그렇기에 하나라도 고장나면 전부 가져가야 한다. 일체형이 아니라 분리형 컴퓨터라면, 고장나면 고장난 것만 가져가면 된다. 즉, 각각 모듈별로 관리해주면 되기 때문에 유지보수가 편하다. 이렇기에 구조와 구획화는 중요하다. 네트워크는 어떻게 구획화를 해야할까? 네트워크는 매우 복잡하다. 이런 상황에서 어떻게 구조를 잘 만들까? 네트워크는 layer별로 구분을 해놓아서 각기 다른 기능을 수행해낸다. 네트워크는 전세계적으로 이용하기 때문에 전세계적으로 공통으로 만들어져야 한다. 그래서 reference model이 나오게 되었다. reference model에 들어가는 protocol도 공통되어야 한다...