NATNetwork Address Translation, 보통 '공유기' 라는 이름으로 익숙하게 알려져있다.말 네트워크 주소를 번역 (변환) 해준다. (일종의 라우터) NAT는 다수의 디바이스로 구성된 어떤 local network(집)에서 외부 인터넷으로 나가는 유일한 통로역할을 한다.외부 인터넷의 관점에서 보면, 해당하는 local network(집)로 들어가는 유일한 통로로 NAT 밖에 보이지 않는다. 즉, 집에서 여러 인터넷 디바이스를 사용하고 싶은데, 인터넷은 하나의 회선만 사용하고 싶을 때 NAT(공유기)를 사용할 수 있다. 또한 밖에서는 하나의 IPv4 주소만 가지고 있는 것처럼 보이기 때문에 내부 네트워크를 감추는 효과도 있다. local network 에서는 다시 각각의 디바이스를 구분하..
IP - Internet ProtocolIP는 인터넷에서 제일 중요한 프로토콜이다.IP가 없으면 인터넷 동작을 할 수가 없기 때문이다내가 아무리 엔드시스템에서 기가 막힌 인터넷 어플리케이션을 만들었다고 하더라도, IP가 없으면 (IP에 의존하지 않으면) 상대방 컴퓨터와 통신을 할 방법이 아예없다. 반대로, 데이터링크 계층에 새로운 기술을 개발했고, 이 기술이 이더넷보다 훨씬 훌륭하다고 생각한다고 해보자.그런데 이 기술을 이용해서 돈을 벌려면 이 기술을 사용한 장치가 인터넷에 연결이 되어야 한다.인터넷은 플랫폼이기 때문이다.따라서 IP가 없어서 대문자 I의 인터넷에 연결될 수 없다면 이 기술은 무용지물이다.IP는 여러 데이터링크 계층 기술과 인터넷이 붙을 수있도록 해주는 접착제 역할을 해준다. 따라서 IP..
라우터이번 글에서는 라우터의 동작에 대해 정리해보려고 한다.라우터는 일종의 컴퓨터이다.라우터에도 OS가 들어가고, 여러 보드가 들어가있다. 라우터의 아키텍처는 위와 같이 되어있다.라인카드로 된 인풋 포트와 아웃풋 포트가 앞단에서 패킷을 받거나 보내고, 라우터는 여러 네트워크와 연결이 되어있으므로 그 중간에 인터페이스가 필요한데, 인터페이스 자체가 컴퓨터이면서 그 안에 여러 컴퓨팅 보드가 존재하는 것이다.이때 지금 그림에서는 왼쪽에서 오른쪽 방향으로 표현하여 input port, output port 를 구분했지만, 이는 방향에 따라 구분되는 것이지 실제로 각 라인카드가 input port, output port 의 역할을 정적으로 수행하는 것은 아니다.방향만 반대로 바꾸면 얼마든지 서로의 역할이 바뀔 수..
개요네트워크 계층에 대한 내용은 크게 data plane 과 control plane으로 구분된다.data plane은 라우터 내에서 지역적으로 일어나는 일을 다루고, control plane은 네트워크 전반적으로 일어나는 일을 다룬다. 우선 data plane을 먼저 정리하려고 한다.data plane에서는 라우터의 input port, output port 그리고 그 사이에 흘러가는 데이터 흐름, IP 프로토콜에 대해 정리한다.또 Generalized Forwarding, SDN 에 대해서, 여러 중간 장치인 Middlebox에 대해서도 정리한다. 이 그림에서 3계층에 대한 이야기를 하기 시작하면, 이제 Network Core에 대한 이야기를 같이 하게 된다.(라우터가 보통 3계층 스위치 장비로서 사..
TCP, UDP 프로토콜은 40년이 넘은 굉장히 오래된 프로토콜이다.그래서 현대의 인터넷 사용환경과 맞지 않는 부분도 꽤 있다. 예를 들면, 과거에는 무선 인터넷이라는 것이 존재하지 않았지만, 지금은 무선 인터넷이 굉장히 흔하다.이런 새로운 환경의 변화에 의해 새로운 도전과제가 생겼을 때, 어떻게 발전을 해야하는지에 대해 정리해보려고 한다. 1. 대역폭이 매우 큰 데이터 링크매우 넓고 긴 대역폭을 가진 링크는 과거에 불가능했지만, 지금은 가능하다.예로 백본에서 사용하는 급의 링크는 10Gbps 이상의 대역폭을 제공하기도 한다. 그런 상황에서의 문제는 굉장히 많은 패킷들이 in-flight 될 수 있다는 것이다.미국 서부에서 동부 끝까지 데이터를 보내는 상황을 생각해보자.만약 stop-and-wait 프로..
Congestion (혼잡)네트워크에서의 '혼잡' 은 너무 많은 source host (sender) 가 너무 많은 데이터를 너무 빠르게 전송해서 네트워크가 이를 처리할 수 없는 상황을 의미한다.즉, 네트워크 트래픽이 몰려있는 상황, 고속도로에 차가 몰려서 차가 막히는 상황과 같다. 데이터가 몰리면 라우터 버퍼에는 패킷이 계속 쌓이니 queueing 딜레이가 증가하니 데이터 전송 시간이 증가할 수 있고, 심한 경우 라우터의 버퍼가 넘쳐서 패킷 Loss가 발생할 수 있다. 이때 혼잡 제어와 흐름 제어를 구분하면흐름 제어는 1:1 상황(TCP, UDP)에서 너무 많은 데이터를 보내는 것을 제어하여 receiver 의 버퍼가 넘치지 않게 조절하는 것을 말하고혼잡 제어는 다수의 sender가 데이터를 너무 많이..
TCP connection managementTCP를 이용해서 데이터를 주고 받으려면, 그 전에 먼저 sender와 receiver 사이에 'handshake'가 필요하다.연결 설정하는 것에 서로 동의하고, 어떤 seq 넘버를 시작점으로해서 데이터를 주고 받을 지 서로에게 알리는 과정을 거치는 것이다. UDP는 이 과정이 필요없다. 내가 보내고 싶으면 상대방이 준비되어 있는지 확인하지 않고 그냥 보내면 된다.하지만 TCP는 신뢰성을 보장해야 하기 때문에 연결을 설정하는 과정을 사전에 거쳐야 한다. 사전에 협의하는 내용은 구체적으로 아래와 같다. 1. 서로의 IP, port 번호, TCP 소켓 여부를 확인한다.2. 데이터를 보낼 때 시작할 initial Seq Number (항상 0으로 시작하는게 아니라 ..
Flow Control세그먼트의 흐름을 제어하는 것1:1 상황에서 자신의 윈도우가 넘치지 않을 정도로만 세그먼트를 보내도록 리시버가 남은 버퍼의 크기를 센더에게 알려주는 것을 '흐름 제어' 라고 한다.센더는 리시버로부터 여유 공간에 맞게 추가 데이터를 보냄으로써 리시버의 버퍼가 넘치지 않도록한다. 위 그림은 리시버의 프로토콜 스택을 보여준다.sender가 보낸 데이터는 IP 헤더 (녹색) 이 붙은 채로 3계층 (네트워크 계층) 을 지나고,3계층에서 TCP로 payload를 넘겨줄 것이다. 이 payload 데이터는 TCP 소켓의 receiver buffer에 담겨있다가, 어플리케이션이 데이터를 읽어가면 그때 버퍼에서 데이터를 삭제한다. 그런데 만약 어플리케이션이 다른 로직을 수행하느라 바빠서 데이터를..
TCP 개요TCP 는 RFC 793 에서 처음 제시된 프로토콜로, 아래와 같은 특징을 가진다. 1. point - to - point 프로토콜TCP는 하나의 sender 와 하나의 receiver 사이에 일어나는 통신에 대한 프로토콜이다.(참고로 1:1 이 아닌 통신으로는 브로드캐스트(1:N, 모두가 수신하도록 전송하는 방법)와 멀티캐스트(특정 그룹만 수신하도록 전송하는 방법)가 있다.) 2. 신뢰성 제공, 정해진 순서에 따른 byte stream 제공byte stream을 제공한다는 의미는 어플리케이션이 보낸 메세지 단위로 데이터를 전송하지 않는다는 의미이다.여러 메세지에 대해서 메세지 단위로 구분해서 데이터를 보내주지 않고, 정해진 byte 단위로 구분해서 전송하므로, 어플리케이션이 생성한 메세지의 ..
Pipelined Protocolrdt 3.0 프로토콜은 stop and wait 방식의 프로토콜이라 performance 가 매우 좋지 않았다.이를 해결하기 위해 pipeline 기법을 이용하여 한번에 여러개 패킷을 전송하는 아이디어가 제시되었다.이와 관련된 아이디어는 크게 Go-Back-N (GBN) 과 Selective Repeat (SR) 프로토콜이 있다.이 프로토콜들은 pipelined protocol 로 분류한다.먼저 Go-Back-N 프로토콜에 대해 정리하자. Go-Back-Nsender먼저 Go-Back-N 프로토콜을 사용하는 sender 입장을 살펴보자.sender는 다수의 pipelined packet을 보내야 하기 때문에 '윈도우' 를 사용한다.'윈도우'라는 이름은 슬라이딩 윈도우 기..