TCP Header
- Source Port, Destination Port: 송신, 수신 포트 주소
- Sequence Number: 송신자가 보내는 데이터의 순서 번호(MSS단위로 증가): k번째를 보냈다
- MSS(Max Sequence Size): TCP가 한 번에 보낼 수 있는 데이터의 최댓값
- 즉, 5000 bytes 데이터가 있고 MSS가 100bytes라면 50개의 세그먼트가 생성된다.
- 첫 번째 세그먼트의 sequence number는 0, 두 번째 세그먼트의 sequence number는 (0+100)으로 설정된다.
- Acknowledge Number: 수신자가 받은 바이트 수에 대한 응답: (k-1)번째까지 받았다→k번째를 기다리고 있음
- 위의 상황에서 0번째 데이터를 정상적으로 모두 받았다면, 0~99번째 바이트까지 받았을 것이다.
- k번째를 기다리고 있기 때문에 k(100)를 보낸다.
- Header Length: 헤더 길이
- Reserved: 예약 필드
- Window Size: 수신자가 받을 수 있는 최대 데이터 크기→송신자는 ACK를 기다리지 않고도 해당 사이즈만큼의 데이터를 전송할 수 있다.
- TCP Checksum: 헤더와 데이터의 에러 확인
- 송신자: checksum 계산 알고리즘에 의해 계산한 checksum을 헤더에 포함시켜 전송
- 수신자: 동일한 알고리즘으로 데이터를 검사하여 오류 체크
- Urgent Pointer: 어디서부터가 긴급한 데이터인지 알려준다.
- Options
- Flag Bit
- URG: 우선순위 높은 데이터임을 표시
- ACK: 승인비트. SYN 이후의 모든 패킷은 ACK 설정이 필요하다. 물어본 것에 대한 응답을 나타낸다.
- PSH: 수신측에 버퍼링된 데이터를 상위 계층에 즉시 전달(빠른 응답 가능)
- RST: 초기화 비트. 연결되어 있는 상화에서 문제가 발생한다면 연결을 리셋한다.
- SYN: 동기화 비트. 상대방과 연결하기 위해서는 무조건 사용한다. 최초 패킷에만 사용
- FIN: 종료 비트. 연결을 끊을 때 사용
UDP Header
- Source Port, Destination Port: 송신, 수신 포트 주소
- Length: 헤더와 데이터의 전체 길이
- Checksum: 에러 확인 용도. 에러 복구 필요 필드가 필요없기 때문에 TCP 헤더에 비해 간단하다.