DongDD's IT

TCP - TCP UDP 특징, TCP Header, Connection 본문

네트워크

TCP - TCP UDP 특징, TCP Header, Connection

DongDD 2017. 7. 30. 15:55

TCP


TCP/UDP


-Transport Layer에 있는 protocol



Transport Layer에는 크게 UDP(User Datagram Protocol)와 TCP(Transport Control Protocol) 두 가지가 있음


TCP의 특징

1) Connection oriented (연결 지향형)

2) reliability (신뢰성)

3) Segment 사용


UDP의 특징

1) Connectionless (비연결)

2) User datagram 사용

3) Unreliability (신뢰성 보장 X)

 

-> 현재는 TCP를 많이 사용하는 추세




TCP에는 각 process가 sending buffer와 receiving buffer를 가지고 있음


Sending Buffer

1) Sent : 보내진 segment이지만 손실에 대비하여 저장해놓고 받은 쪽으로 부터 acknowledge를 받으면 삭제함

2) Not sent : process로 부터 Transport Layer로 data가 왔지만 아직 전송하지 않은 상태

3) Empty : 비어 있는 공간


Receiving Buffer

 1) Not read : segment를 받아 저장했지만 아직 process에게 올라가지 않은 상태

 2) Empty : 비어 있는 공간


TCP (Transport Control Protocol)


1) Numbering System

- Sequence Number를 사용하여 data의 순서를 결정 (0~2^32 의 값 중 임의로 선택됨)   

- Sequence Number의 다음 번호로 Acknowledge를 받음


2) Segment


위의 Layer에서 내려온 Data에 20~60bytes의 Header를 붙여 Segment를 만듬


3) TCP Header



Soucre와 Destination의 Port address가 들어가고 4bytes의 Sequence number와 Acknowledge Number가 들어감 

     - Sequence Number : 보내는 data의 첫 번째 

ex) 9000~10000의 경우 9000으로 해서 보냄

     - HLEN : Header의 길이( 실제 Header 길이를 4로 나눈 값을 HLEN에 넣어 20~60bytes 표현)

     - Reserved : 사용하지 않음

     - 6개의 FLAG

          1) URG : Urgent Pointer 사용 여부

          2) ACK : Acknowledge Number 사용 여부

          3) PSH : Request for push

          4) RST : Reset Connection (연결 겨부)

          5) SYN : Synchronize sequence numbers (연결 요청)

          6) FIN : Terminate Connection (연결 취소 요청)

             - Window Size : Receiver 쪽이 받을 수 있는 양 (Connection시 설정)

     - Checksum : Error 검사

     - Urgent Pointer : Sequence Number로 부터의 offset으로 Urgent Data를 가리킴

     - 각종 Option


4) Connection Establishment



TCP에서의 Connection 방식 : Three Handshake

- 요청하는 쪽에서 SYN을 보냄

- 받는 쪽에서 SYN+ACK을 보냄

- 받은 SYN+ACK에 대한 ACK을 보냄


ACK segment는 sequence number를 사용하지 않음

SYN segment와 SYN+ACK segment는 하나의 sequence number 사용


5) Connection Termination

- Establishment와 달리 두가지 방식으로 이루어질 수 있음



① Three handshake

- 요청하는 쪽에서 FIN을 보냄

- 받는 쪽에서 FIN+ACK을 보냄

- 받은 FIN+ACK에 대한 ACK을 보냄


② Four handshake  - 이러한 방법을 Half Close라고 부름

- 요청하는 쪽에서 FIN을 보냄

- 받는 쪽에서는 보낼 data가 남거나 여러 이유로 ACK만 보내고 보낼 수 있는 연결을 유지함

- 연결을 끊어도 될 상황이 오면 FIN을 보냄

- 받은 FIN에 대한 ACK을 보냄


ACK segment는 sequence number를 사용하지 않음

FIN segment와 FIN+ACK segment는 하나의 sequence number 사용

Comments