Tcp (Transmission Control Protocol)

대인공·2022년 9월 9일
0

Network

목록 보기
3/4
post-thumbnail

특징

  • 연결형 서비스로 가상 회선 방식을 제공
  • 연결과정(3-Way Hand Shake)과 연결 종료 과정(4-Way Hand Shake)가 있다.
  • 높은 신뢰성을 보장한다.
  • 흐름 제어와 혼잡 제어
  • 데이터 순서를 보장한다.

높은 신뢰성

- 높은 신뢰성을 보장하기 위하여 헤더에 많은 정보를 포함하고 있다.

  1. Source Port : 송신 포트 번호

  2. Desination Port : 수신 포트 번호

  3. Sequence Numbr : TCP 세그먼트 안의 데이터 송신 바이트 위치 / 송신 데이터의 일렬번호를 담고있다.

  4. Acknowledgement Number : 수신자의 다음 데이터 바이트 순서번호 / 상대방이 다음에 전송할 일렬번호를 담고있다.

  5. Data Offset / Header Length : 헤더의 길이 / 헤더의 정보를 담고있다.

  6. Received : 예약되어 있는 필드 / 나중을 위해 남겨두는 비트

  7. Control Flag :

    1. URG (Urgent Pointer) : 특정(긴급)상황 시, 특정 데이터를 읽기 원하는 경우 사용
    2. ACK (Acknowledgement) : 요청에 대한 확인 응답 시 사용
    3. PSH (Request for push) : 네트워크에서 버퍼링 우회와 데이터 즉시 통과 시 사용
    4. RST (Reset the connection) : Tcp연결 중 특이사항이 발생하여 강제 종료시 사용
    5. SYN (Synchronized sequence number) : 클라이언트, 서버의 일렬번호(동기화)를 확인 시 사용
    6. FIN (Terminate the connection) : Tcp연결 종료 시 사용
  8. Window Size : 수신측이 받을 수 있는 데이터 사이즈

  9. Chacksum : Tcp헤더 데이터를 포함한 세그먼트 전체 계산 값

  10. Urgent Position : 긴급히 처리해야 하는 데이터 바이트 위치

  11. Tcp Options : 연결이 구성되는 동안의 최대 세그먼트 크기 옵션



과정



연결 과정


3-Way Hand Shake

- 서버와 클라이언트가 최초 연결 시 수행되는 과정이다.

(과정 그림)

  1. SYN : 클라이언트가 서버 IP로 Tcp연결이 가능한지 확인하는 과정이다.
  2. SYN / ACK : 서버에서 Tcp로 연결이 가능한 경우, 클라이언트로 통신이 가능하다는 응답을 보낸다.
  3. ACK : 클라이언트에서 서버의 통신 가능 응답을 확인하였으며, 데이터 전송을 시작한다고 서버에 알린다.
  • SYN (Synchronous Idle) : ‘동시에 발생하다’의 약자로, 다른 컴퓨터로 전송 된 Tcp패킷으로 연결이 이루어 지도록 요청한다.
  • ACK (Acknowledgement) : ‘승인’의 약자로, 다른 컴퓨터나 네트워크 장치가 다른 컴퓨터에 SYN / ACK 또는 다른 요청을 보낸것을 확인한 응답을 나타낸다.

  • 전체 과정
    SYN이 두 번째 시스템에서 수신되면 SYN / ACK가 SYN이 요청한 주소로 다시 전송됩니다. 마지막으로 원래 컴퓨터가 SYN / ACK를 수신하면 최종적으로 ACK가 전송된다.


연결 종료 과정

- 연결순서와 마찬가지로 데이터의 안전성을 위하여 서버와 클라이언트간 FIN(Finish)을 통하여 안정적으로 종료하는 과정이다.


4Way - Hand Shake

- 서버와 클라이언트가 연결 종료 시 수행되는 과정이다.

(과정 그림)

  1. FIN + ACK : 클라이언트에서 서버로 연결을 종료한다는 메시지를 보낸다.
  2. ACK : 서버에서 클라이언트의 FIN에 대한 응답을 한 후, 전송할 데이터가 없는지 확인한다.
  3. FIN + ACK : 전송할 데이터가 없는지 확인후, 서버에서 클라이언트에게 종료해도 좋다는 메시지를 보낸다.
  4. ACK : 클라이언트에서 서버로 응답을 보내고 연결을 종료한다.
profile
이제 막 시작하는 유니티 클라이언트

0개의 댓글