Header란 정보기술에서 헤더(header)는 저장되거나 전송되는 데이터 블록의 맨앞에 위치한 보충
데이터를 가리킨다. 데이터 전송에서 헤더를 따르는 데이터는 페이로드(payload), 바디(body)로
불리기도 한다.
쉽게 말하면 Frame, Packet, Segment 앞에 있는 헤더를 읽고 데이터의 주인이 맞는지 확인하는
과정이라고 생각하면 이해하기가 쉽다.
TCP/UDP는 OSI 7 Layer에서 4계층인 Transport에 속하고 Segement의 단위를 가지고 있다.
TCP Header의 크기는 20 ~ 60byte다.
소켓은 네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신의 하나의 엔트 포인트다.
소켓은 포트 번호에 바인딩(연결하는 과정)되어 TCP 레이어에서 데이터가 전달되야하는 어플리케이션
을 식별할 수있게 한다.
1. URG(Urgent Pointer 긴급 포인터)
필드에 값이 채워져있음을 알리는 플래그. 송신측 상위 계층이 긴급 데이터라고 알려주면,
긴급비트 URG를 1 로 설정하고, 순서에 상관없이 먼저 송신됨
2. ACK(Acknowledgment 승인 번호)
1로 셋팅되면, 확인번호 유효함을 뜻한다. 0으로 셋팅되면, 확인번호 미포함 (즉, 32 비트 크기의
확인응답번호 필드 무시됨)
3. PSH(Push)
수신 측에게 이 데이터를 최대한 빠르게 응용프로그램에게 전달해달라는 플래그이다. 이 플래그가 0이
라면 수신 측은 자신의 버퍼가 다 채워질 때까지 기다린다. 이 플래그가 1이라면 이후에 더 이상
연결된 세그먼트가 없음을 의미하기도 한다.
※ 아래 3개 비트 플래그(RST,SYN,FIN)는 TCP 연결설정 및 TCP 연결종료에 주도적으로 사용됨
4. RST(Reset 강제 연결 초기화)
ESTABLISHE(연결확립)된 회선에 강제 리셋 요청
5. SYN(Synchronize 연결시작, 동기화)
TCP 연결설정 초기화를 위한 순서번호의 동기화
연결요청 : SYN=1, ACK=0 (SYN 세그먼트)
연결허락 : SYN=1, ACK=1 (SYN+ACK 세그먼트)
연결설정 : ACK=1 (ACK 세그먼트)
6. FIN(Finish 종료)
상대방과 연결을 종료하고 싶다는 요청인 세그먼트임을 의미한다.
종결요청 : FIN=1 (FIN 세그먼트)
종결응답 : FIN=1, ACK=1 (FIN+ACK 세그먼트)
*NS, CWR, ECE 플래그는 네트워크의 명시적 혼잡통보(Explicit Congestio
n Notification, ECN)을 위한 플래그이다.
7. NS
CWR, ECE 필드가 실수나 악의적으로 은폐되는 경우를 방어하기 위해 추가된 필드
8. ECE(ECN Echo)
해당 필드가 1이면서, SYN 플래그가 1일 때는 ECN을 사용한다고 상대방에게 알리는 의미.
SYN 플래그가 0이라면 네트워크가 혼잡하니 세그먼트 윈도우(데이터의 양)의 크기를 줄여달라는
요청의 의미이다.
9. CWR
이미 ECE 플래그를 받아서, 전송하는 세그먼트 윈도우의 크기를 줄였다는 의미이다.
16비트는 너무 길어서 8비트로 예를 들면
1의 보수(쉽게 주어진 값이 1이면 0인 반대값으로 생각)를 취하고, 그 합에 대한 결과를 전송하면
수신측에서, 같은 합을 해보아서 오류를 검출하는 방식이다.
10001010
+ 01110101
-----------
11111111
검사합의 값이 0 이면 오류 없음, 0 이 아니면 오류 있음
UDP 헤더는 TCP 헤더와 비교하면 상당히 간단하다.
목적지와 출발지 간단한 조건만 맞으면 전송해서 신뢰성이 없다라고 알아두자.
IP Header의 크기는 IPv4일 경우 20 ~ 40 바이트고 IPv6일 경우 40 바이트 고정이다.
Type of Service (8 비트)
요구되는 서비스 품질을 나타낸다.
자세한 내용은 Type of Service를 참고하자.
Total Packet Length (16 비트)
IP 헤더 및 데이터를 포함한 Packet 전체의 길이를 바이트 단위로 길이를 표시한다.
최대값은 2^16 - 1 = 65,535
첫번 째 bit : 미사용 (항상 0)
두번 째 bit : D F bit (Don't Fragment)
세번 째 bit : M F bit (More Fragment)
0 = NO , 1 = OK <- 기억하자.
ICMP = 1
IGMP = 2
TCP = 6
EGRP = 8
UDP = 17
OSPF = 89
...
Ethernet Type은 많아서 외우기 힘들지만 필요한거 조금 조금씩 알아야한다.
CRC(Cyclic Redundancy Check) 순환 중복 검사
특징은 에러 유무만 검출하고, 에러의 위치나 정정은 할 수 없다.
재전송 기반 에러제어를 하는 프로토콜에 쓰인다.