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 |