본문 바로가기

Programming Theory/Network

TCP protocol

1. 개괄

TCP/IP protocol 의 transport 계층은 TCP/UDP로 나뉜다.

cf. TCP/IP protocol : Application / Transport / Internet / Network Interface

transport 계층은 

1) 데이터의 안정적 전송 (flow / acknowledgement / connection control)

2) 응용 프로그램의 식별 (port 이해)

역할을 한다.


UDP 방식의 경우 데이터의 안정적 전송이 안되는데, 데이터 신뢰성 보장을 해야 한다면, application 계층에서 신뢰성을 보장할 수 있다.


2. 특징

1) 신뢰성

2) 연결 지향 (Connection oriented protocol)

3) Byte-Streamdata 전달에 적합


3. TCP Header의 구조

 1) source port number (16bit)

destination port number(16bit) 

2) sequence number

 3) acknowledgement number

4) header length

5) window sizes 

6) TCP checksum

7) code bit 

8) options (필요하다면) 


1) source port number / destination port number

- port 번호의 범위는 0 ~ (2의 16제곱 -1 = 65535)

 Well-known ports

- IANA 지정

0 ~ (2 의 10제곱 -1 = 1023)

 Registered ports

- IANA 지정 예정

(2의 10제곱=1024) ~ (2의 15제곱 - 1 = 49151)

 Dynamic ports

- 필요시 할당 가능 port

(2의 15제곱=49152) ~ (2의 16제곱 -1 = 65535)

- HTTP 응용 프로토콜을 사용해서 client(web browser) 와 server(web server) 가 통신을 한다고 하면, server 의 port는 80 으로 고정, client 의 port 는 그때마다 Dynamic ports 의 범위의 숫자 중 사용되지 않는 숫자가 할당된다. client 의 port 가 지정되지 않는 이유는 한 PC 에서 여러개의 web browser를 띄울 수 있기 때문이다. 


2) sequence number 

- TCP 는 연결지향 프로토콜(Connection oriented protocol) 로, 데이터를 보내기 전에 먼저 연결을 선행한다. 이때 물리적인 연결 경로는 데이터를 보낼 때마다 네트워크의 상황에 따라 달라질 수 있다. 물리적인 연결 경로가 달라질 수 있기 때문에, 발신지에서 데이터를 보내는 순서와 목적지에 데이터가 도착하는 순서가 달라질 수 있다. TCP는 데이터의 안정적인 전송을 보장하기 때문에 TCP 가 목적지에 도착한 데이터 순서를 발송한 순서에 맞게 조정한다. 

- sequence number는 TCP 가 위의 목적으로 데이터의 순서를 조정하는 기준이다.

- sequence number는 상대주소(offset)을 말한다.


3) acknowledgement number

<2개의 목적>

1) 목적지에서 발신지에 데이터를 잘 받았다는 확인응답

2) 'acknowledgement number' = 'sequence number' + '발신지로부터 받은 data size' 로, 다음 보내줄 데이터의 위치를 알려준다. 예를 들어, 발신지로부터 sequence number 700, data size 1000 byte 라면, acknowledgement number는 1700 이 되며, 발신지에서는 다음번에 1700 byte stream 의 데이터부터 전송을 한다.

 

4) header length

header length를 통해 application 에서 data 가 어느 위치에 있는지를 알 수 있다. TCP header 의 options(max : 40byte) 때문에 header length는 가변적이다.(min : 20byte, max : 40byte)


5) window sizes

TCP protocol 에서는 수신 buffer 라는 것이 있으며

, 데이터는 TCP -> 수신 buffer -> Application 으로 가는 순으로, 수신 buffer 의 남은 size 보다 더 많은 데이터를 TCP 에서 수신 buffer로 전송한다면, overflow가 발생한다.

수신 buffer 의 overflow를 방지하기 위해 목적지에서는 window sizes 항목에 수신 buffer의 남은 데이터 size를 설정해서 발신지로 TCP data를 보낸다.


6) TCP cheksum

data 가 전송 중에 손상되었는지를 check한다.


7) code bit

data 용도를 말하며, 6개의 각각의 의미를 갖는 bit로 1은 내용을 포함한다는 의미, 0은 내용을 포함하지 않는다는 의미이다.


code bit 

의미 

 URG

순서를 무시하는 긴급 데이터가 포함되어 있음을 의미 

 ACK

확인응답이 유요함을 의미 

 PSH

전송데이터가 더 모여지기를 기다리지 말고 즉시 전달하라는 의미 

 RST

기존의 연결을 재설정하라는 의미 

 SYN

연결 설정을 요구 

 FIN

연결이 종료됨을 의미 


4. 오류 조치

1) 손상 오류

 - checksum 알고리즘에 의해 손상을 발견하는 것이 가능하다.

 - 손상이 있을 경우, 목적지 TCP는 해당 데이터를 버리고, 응답을 주지 않는다.

 - 발신지는 특정 시간 내 응답이 오지 않을 경우, 데이터가 통신과정에서 손상/손실된 것으로 판단해 동일한 데이터를 다시 보낸다. (시간 초과 카운터(Timer)

2) 손실 오류

 - 손실이 난 경우, 목적지 TCP는 데이터를 받지 못한다.

 - 따라서, 당연히 목적지 TCP는 발신지 TCP에 응답을 주지 못한다.

 - 발신지는 특정 시간 내 응답이 오지 않을 경우, 데이터가 통신과정에서 손상/손실된 것으로 판단해 동일한 데이터를 다시 보낸다. (시간 초과 카운터(Timer)

3) 중복 오류

 - 통신 과정에서 손상/손실이 나지 않았음에도 불구하고, 특정 시간 내에 응답이 오지 않을 수 있다. 

 - 발신지 TCP는 이런 경우 동일한 데이터를 다시 보낸다.

 - 목적지 TCP는 동일한 데이터를 중복해서 수신할 수 있다. 그러나 sequence number를 사용해 중복 오류에 대해 조치할 수 있다.

4) 순서 오류

- 데이터 별로 물리적인 네트워크 경로가 다를 수 있다. 따라서 발신지에서 보낸 순서와 목적지에 도착한 순서가 다를 수 있다.

- sequence number로 조치가 가능하다.

'Programming Theory > Network' 카테고리의 다른 글

IP/ARP/RARP/ICMP protocol  (0) 2014.12.28
UDP protocol  (0) 2014.12.27
OSI 7 layer 와 level 별 switch 장비  (0) 2014.12.21
OSI 7 Layer 와 network 장비  (0) 2014.12.21
ethernet 과 collision domain / broadcast domain  (0) 2014.12.21