반응형
TCP 헤더
1. 출발지 포트번호(Source Port Number)
- 출발지 주소를 판별하기 위해서, IP주소와 포트번호가 필요하다. TCP 헤더에는 포트 번호가 담겨있다
2. 목적지 포트번호(Destination Port Number)
- 목적지 주소를 판별하기 위해서, IP주소와 포트번호가 필요하다. TCP 헤더에는 포트 번호가 담겨있다
3. 일련 번호(Sequence Number)
- 전송하는 데이터의 순서, 32비트를 할당받기 때문에, 시퀀스 번호가 중복되기는 어렵다
- 최대값(4,294,967,296)을 넘어가면 0부터 재시작한다
4. 확인 응답 번호(Acknowledgment Number)
- 데이터 수신자가 예상하는 다음 시퀀스 번호를 의미한다.
- 상대방이 보낸 시퀀스 번호 + 자신이 받은 데이터의 bytes
- 결국 확인 응답 번호는, 다음에 보내줘야하는 데이터의 시작점을 의미한다
5. 헤더 길이(Header Length)
- Data Offset, 헤더가 아닌 데이터가 시작되는 위치가 어디부터인지 표시한다
- 32비트 워드 단위를 사용한다. 1 word = 4 bytes
- 해당 필드 값에 4를 곱하면 세그먼트에서 헤더를 제외한 실제 데이터의 시작 위치를 알 수 있다
- 4비트로 0부터 15까지의 word 범위를 담을 수 있다. 즉, 0~60bytes 까지 표현 가능하다
- 헤더의 최소 길이는 20bytes 이므로, 기본적으로 5 word로 고정되어 있다
- 옵션의 길이가 유동적이기 때문에 필요한 필드
6. 예약 영역(Reserved)
- 미리 예약된 필드로, 모두 0으로 채워져 있다
7. 코드 비트(Code bit) - 6개의 Flag bit
총 9개의 플래그비트 = 기존 6개의 플래그 비트 + 예약 영역의 3비트를 빌려 추가된 3개의 플래그 비트
혼잡 제어기능의 향상을 위해 NS, CWR, ECE 플래그가 추가되었다.
- URG : Urgent Pointer 필드에 값이 채워져있음을 알리는 플래그
- ACK : Acknowledgment Number 필드에 값이 채워져있음을 알리는 플래그. 0일 경우, 승인번호 필드 무시
- PSH : Push 플래그, 수신 측에게 데이터를 최대한 빠르게 응용프로그램에 전달해달라는 플래그. 0일 경우 수신측은 버퍼가 다 채워질 때까지 기다린다.
- RST : Reset 플래그. 이미 연결이 확립되어 ESTABLISHED 상태인 상대에게 연결을 리셋해달라는 의미
- SYN : Synchronize 플래그. 시퀀스 번호 동기화를 맞추기 위한 세그먼트
- FIN : Finish 플래그. 상대방과의 연결 종료
- NS : ECN(Explicit Congestion Notification, 명시적 혼잡통보)에서 사용하는 CWR, ECE 필드가 은폐되는 경우를 방어하기 위한 플래그
- ECE : ECN Echo 플래그. ECE가 1이고 SYN이 1이면 ECN을 사용한다는 의미, ECE가 1이고 SYN이 0이면, 네트워크가 혼잡하니 세그먼트 윈도우의 크기를 줄여달라는 의미
- CWR : ECE 플래그를 받아 윈도우의 크기를 줄였다는 의미의 플래그
8. 윈도우 크기(Window Size)
- 한번에 전송할 수 있는 데이터의 양
- 16bit 할당, byte 단위 이므로 윈도우의 최대크기는 64KB
- 윈도우 사이즈의 최대 크기를 늘리고 싶을 때에는, 옵션필드의 WSCALE 필드를 사용한다
9. 체크섬(Checksum)
- 송신 중 발생하는 오류를 검출하기 위한 값
- 전송할 데이터를 16bits로 나누어 차례대로 더해가는 방법으로 생성
- 체크섬 생성 및 체크 방법 -
10. 긴급 포인터(Urgent Pointer)
- URG 플래그가 1일 경우, 이 포인터가 가르키고 있는 데이터를 우선적으로 처리한다
11. 옵션(Option)
- TCP의 기능을 확장할 때 사용하는 필드
- 크기는 가변적이다
- 최대 크기 40bytes
- 옵션의 종류 -
참고자료
모두의 네트워크 - 교보문고
10일 만에 배우는 네트워크 기초 | 즐거운 프로그래밍 경험 | 누구나 10일이면네트워크를 이해할 수 있다!준비 | 네트워크 기초 지식 익히기네트워크, 패킷, 비트, 바이트, 랜, 서버 등 네트워크 용
www.kyobobook.co.kr
정보통신기술 용어 해설 - http://www.ktword.co.kr/test/view/view.php?m_temp1=1889
Evans Library - https://evan-moon.github.io/2019/11/10/header-of-tcp/
반응형
'IT Basic > Network' 카테고리의 다른 글
모두의 네트워크 - 8장 네트워크의 전체 흐름 살펴보기 (0) | 2021.12.09 |
---|---|
모두의 네트워크 - 7장 응용 계층 : 애플리케이션에 데이터 전송하기 (0) | 2021.12.09 |
모두의 네트워크 - 6장 전송 계층 : 신뢰할 수 있는 데이터 전송하기 (0) | 2021.12.08 |
모두의 네트워크 - 5장 네트워크 계층 : 목적지에 데이터 전달하기 (0) | 2021.12.01 |
모두의 네트워크 - 4장 데이터 링크 계층 : 랜에서 데이터 전송하기 (0) | 2021.12.01 |
댓글