TCP의 구조

김태영·2022년 3월 28일
0

TIL

목록 보기
5/6

TCP 구조

TCP 헤더
TCP통신으로 데이터를 보낼 때 헤더를 붙여서 보내는 것을 TCP 헤더라고 하며, TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
이 헤더에는 출발지 포트번호(16비트)부터 목적지 포트번호(16비트)... 옵션까지 11가지의 데이터가 포함되어 있다.

1. 코드비트

코드비트에는 정보의 연결 제어 정보가 기록되고 이 기록을 토대로 가상의 독점 통신로를 확보한다.
가상의 독점 통신로 : TCP통신에서 정보를 전달하기 위해 사용되는 가상의 통신로. 연결의 확립 및 데이터 전송

3-way 핸드셰이크
데이터를 보내기 전 연결 확립을 위해 패킷 요청을 세번 교환하는 과정.
코드비트 중 ACK=확인 응답, SYN=연결요청을 사용하여 패킷을 교환하는 과정을 거친다.

  1. A 컴퓨터가 B컴퓨터에 통신하기 위해서 연결 확립 요청(SYN) 전달
  2. B 컴퓨터는 허가 응답을 위해 연결확립 응답(ACK) 전달, 동시에 B 컴퓨터도 데이터 전송 허가를 받기위해 A 컴퓨터에 연결 확립 요청(SYN)
  3. A 컴퓨터가 받은 B 컴퓨터의 응답에 대한 응답으로 연결확립 응답(ACK) 전달

위의 경우는 연결을 하기위한 과정이고 반대로 연결을 해제하기 위한 과정도 있다.
코드비트 중 ACK=확인 응답, FIN=연결 종료를 사용하고 과정은 위의 1~3과 동일하지만 SYN이 FIN으로 대체되어 있다고 생각하면 편하다.


2. 일련번호, 확인 응답 번호

일련번호는 송식 측에서 수신측에 해당 데이터가 몇 번째 데이터인지를 알려주며 몇 번째 데이터를 받았는지 확인하여 수신측에 알려거나 다음 데이터를 요청하는데 사용된다.

재전송 제어
데이터가 손상 및 유실 되었을 경우 데이터를 재전송 시켜달라고 하는데 이것을 재전송 제어라고 한다.


3. 윈도우 크기

세그먼트를 하나 보낼 때 마다 응답을 기다리는 방식이 3-way 핸드셰이크 방식인데 이 방식의 경우 매번 응답을 기다려야해서 효율이 좋지 않다.
그렇기에 세그먼트를 연속해서 보내고 응답을 한번에 받게 되면 효율이 높아지는데 많은 양의 세그먼트를 보낼 경우 그것을 보관하는 장소를 버퍼라고 하며 버퍼보다 양이 많아 넘칠경우 이것을 오버플로라고 한다.

오버플로가 발생하지 않도록 버퍼의 한계 크기를 정해두는데 윈도우 크기값에 그 크기를 저장해둔다.

profile
즐거운 개발을 위해~

0개의 댓글