복습
Chapter 1: Computer Network and Internet
- edge에는 클라이언트와 서버가 있고, core에는 router가 있다.
- 인터넷은 써킷이 아닌 패킷 기반의 통신이다. 이는 데이터가 패킷이라는 독립적인 단위로 나누어진 후, 패킷 별로 데이터 통신이 이루어진다는 뜻이다.
- 네트워크는 모든 사용자가 공유하는 공유 자원이다. 때문에 동시에 패킷이 많이 통신되어 라우터의 처리 한계량을 넘었을 때는 큐와 같은 임시공간에 패킷을 저장하여 딜레이가 발생한다. 이를 넘어 큐의 공간도 가득찼을 때 패킷 드랍 및 패킷 로스가 발생한다.
4개의 딜레이
- 라우터가 패킷을 받을 때, 가장 먼저 header의 정보를 읽는다. 이를 통해 패킷의 목적지 등을 확인한다. 이 때 프로세싱 딜레이가 발생한다.
- 패킷의 목적지를 확인한 후, 처리를 위해 패킷을 큐에 쌓는다. 이때 먼저 쌓인 패킷이 있다면 큐잉 딜레이가 발생한다.
- 기다리던 패킷이 큐의 제일 앞으로 이동하여 링크로 모두 올라탈 때까지 발생하는 것이 트랜스미션 딜레이다.
- 이후 패킷이 다음 라우터에 도달할 때까지 걸리는 시간이 (빛의 속도와 동일한) 프로포지션 딜레이다.
Chapter 2: Application layer
HTTP
- HTTP의 메세지 종류는 단 2개 뿐이다. Request, response.
- 서버는 단순히 요청한 파일을 전달하는 역할을 한다. 때문에 stateless protocol이다.
- HTTP는 TCP를 사용한다. TCP는 reliable한 규칙을 가지고 있기 때문에, 이를 사용하는 HTTP도 reliable한 통신이 가능하다.
- HTTP 연결은 TCP를 사용하는 방식에 따라 두 가지로 나뉜다. Nonpersistent HTTP, persistent HTTP. 구분 요건은 'TCP를 재활용하는지' 뿐이다.
Nonpersistent HTTP
- 매 번 request할 때마다, 다른 TCP connection을 사용한다.
Persistent HTTP
- 한 번 연결한 TCP connection을 계속 사용한다.
- HTTP의 default 연결이다.
- pipelining 전송 방식을 사용하지 않을 경우에
TCP
- TCP는 application protocol이다.
3-way-handshake
- 첫번째 통신은 TCP thin packet
- 두번째 통신은 TCP thin ACK
- 세번째 통신은 (데이터를 담고 있기 때문에) HTTP request
Chapter 3: Transport layer
UDP
- TCP에 비해 단순한 구조를 갖고 있다.
- header에 필드가 4개 뿐이다. source port number, dest port number, length, checksum. 때문에 error detection, multiplexing, demultiplexing 등 트랜스포트 레이어가 할 기본적인 기능만을 수행한다.
- UDP를 사용하는 application protocol는 대표적으로 DNS가 있다.
Principles of Reliable Data Transfer
-
reliable한 데이터 통신이 필요한 이유는 기본적으로 underlying network가 unreliable한 성질을 띄기 때문이다.
-
unreliable한 채널에서 발생할 수 있는 부정적인 현상은 packet error 및 packet loss가 있다.
-
packet error를 해결하기 위해서는 다음 기능이 필요하다. error detection, feedback, retransmission, sequence number(일반전송인지 재전송인지 확인할 수 있도록)
-
packet loss를 해결하기 위해서는 timeout 기능이 필요하다. 일정시간 동안 feedback이 오지 않으면 packet loss라고 판단하고 재전송을 한다.
Pipelined protocols
- 많은 패킷을 한 번에 전송하는 방식을 뜻한다.
- 파이프라인 프로토콜에는 go-Back-N과 selective repeat 방식이 있다.
go-Back-N
- 장점: 동작이 단순하다.
- 단점: 패킷 에러 혹은 패킷 로스 등이 발생했을 때, 한 번에 전송된 모든 패킷이 전부 재전송되어야 하기 때문에 오버헤드가 발생한다.
selective repeat
- 장점: 유실된 패킷만 재전송할 수 있다.
- 단점: 동작이 복잡하다. 저장공간이 많이 필요하다. 각각의 패킷마다 타이머가 필요하다.
TCP: Overview
- point to point: 딱 두 개의 소켓이 통신한다. (sender to receiver)
- reliable, in order byte stream
- pipelined: 윈도우 사이즈만큼 패킷 통신이 일어난다.
- send buffers and receive buffers: 양쪽에 각 1개씩 가지고 있다.
- full duples data
- connection oriented
- flow controlled
TCP segment structure
본 학습
Chapter 4: Network layer
App, Transport, Network, Link, Physical.
이 다섯가지의 계층은 상위계층일수록 개념적이고 하위계층일수록 표상적이고 디테일하다.
네트워크는 단 하나의 프로토콜, IP를 가진다.
네트워크 챕터에서는 IP와 routing algorithms에 대해 핵심적으로 배울 예정이다.
네트워크 레이어에서 가장 중요한 두 가지 기능은 forwarding과 routing이다.
forwarding: move packets from router's input to appropriate router output. (which process is getting through single interchange)
routing: determine route taken by packets from source to dest. (which process is planning trip from source to dest)
forwarding
- 초록색 박스가 forwarding table이다.
- 패킷 헤더의 목적지 주소를 forwarding table에서 매칭시키면 output link가 2인 것을 알 수 있다. 그럼, 해당 패킷은 2번 라우터로 보내지게 된다.
routing (routing algorithms)
- forwarding table을 만들어주는 역할을 한다.
그러나 header value 1개당 output link를 각각 지정해주면, 매칭을 시키는 데 시간도 많이 들고 어렵기 때문에 아래와 같이 일정 범위로 dest address를 지정한다.
다만, 이럴 경우 하나의 Dest Address가 여러 개의 범위에 들 수 있다. 그럴 땐 가장 구체적으로 동일한 범위의 link interface로 매칭된다.