kitri 과제

2주차 TCP 헤더(header) 조사하기

dh챈 2023. 2. 22. 09:56

1) TCP 헤더 조사

▲ TCP Header

< 구성 >

Source Port Number (16bit) : 송신 프로세스 식별(IP주소 + 포트번호 = 소켓 주소)

Destination Port Number (16bit) : 수신 프로세스 식별(IP주소 + 포트번호 = 소켓 주소)

Sequence Number (32bit) : 전송하는 데이터 순서를 의미한다. (신뢰성 및 흐름제어)

Acknowledgement Number (32bit) : 확인응답 번호로 마지막 수신 성공 순서번호 + 1

Header Length [HLEN] (4bit) : TCP 헤더 길이, 4byte(32bit) 단위로 표시한다.

TCP헤더의 길이는 최소 20byte~60byte 이하

Reserved (6bit) : 차후에 사용을 위해 만들어진 예약 필드로 현재는 사용되지 않는다.

6개의 Flag bits (9bit) : TCP 세그먼트 전달과 관련해 TCP 회선 및 데이터 관리/제어를 담당.

Window size (16bit) : 흐름제어를 위해 사용되는 필드이다.

Checksum (16bit) : 검사합

Urgent Pointer (16bit) : 긴급 데이터가 시작되는 위치를 가리키는 필드이다.

Options and Padding (최대 40byte) : TCP MSS 옵션 협상, 주어진 윈도우 크기보다 더 크게 사용. 선택확인응답, 타임스탬프 옵션 정의 등의 옵션 데이터를 포함할 수 있다.

 

 

2) TCP Header Flag

CWR (Congestion Window Reduce)

ECE (ECN Echo) : 해당 필드가 1이면서, SYN 플래그가 1일 때는 ECN을 사용한다고 상대방에게 알리는 의미. SYN 플래그가 0이라면 네트워크가 혼잡하니 세그먼트 윈도우의 크기를 줄여달라는 요청의 의미이다.

URG (Urgent) : 긴급 데이터를 알리고 순서에 상관없이 먼저 송신한다.

ACK (Acknowledgement) : 확인응답 필드에 확인응답번호 값이 세팅됐음을 알린다.

PSH (Push) : 수신자에게 버퍼링된 데이터 푸시 여부를 가리킨다.

RST (Reset) : 연결확립(ESTABLISHED)된 회선에 강제 리셋 요청을 한다.

SYN (Synchronize) : TCP 연결설정 초기화를 위한 순서번호의 동기화를 나타낸다.

FIN (Finish) : 연결 종료 요청을 나타낸다.

 

 

3) TCPUDP의 차이점

TCP UDP
신뢰적(데이터 누락x) 비신뢰적(데이터 누락o)
연결지향 비연결지향
에러복구기능o 에러복구기능x
순서제어 순서제어x
흐름제어(Wiindow Size) 흐름제어x
1:1통신 1:1, 1:N통신
속도가 UDP보다 느리다 속도가 빠르고 시스템의 부하가 적다
가상 회선 방식 데이터그램 방식

 

 

4) TCP 3Way Handshake, TCP 4way Handshake의 과정 및 차이점

TCP 연결 설정 → TCP 3Way Handshake 

TCP 연결 해제 →  TCP 4way Handshake

▲TCP 3way handshaking(연결 설정)

< TCP 3Way Handshake 절차 >
TCP 1way : Client측에서 listen 상태인 Server에게 시퀀스넘버를 생성해
syn 패킷에 담아 보낸다. (클라이언트가 데이터를 보내기 전 동기화 요청)
--------------Client [SYN_SENT] / Server[Listen -> SYN_RESV]-----------------
TCP 2way : Server도 시퀀스 넘버를 생성해 syn 패킷에 보내고,
Client에게 받은 시퀀스 넘버 + 1을 해서 ack을 보낸다.
----------------------------------------ESTABLISHED-------------------------------------
TCP 3way : Client가 Server가 보낸 시퀀스넘버 + 1을 해서 ack으로 보내고,
Server가 보낸 ack 넘버를 시퀀스 넘버로 보낸다.
(만약, ack이 돌아오지 않는다면 데이터가 전달되지 않았다고 판단한 후 다시 보낸다.)
----------------------------------------ESTABLISHED-------------------------------------

 

 

 

 

 

 

 

▲TCP 4way handshaking(연결 종료)

TCP 연결 종료에는 정상 종료, 반 종료, 동시 종료, 강제 종료 4가지가 있다.

정상 종료 : 4way handshaking에 의해 양방향 모두 종료되는 것

반 종료 : 한쪽만 종료하는 것

동시 종료: 거의 동시에 양쪽에서 FIN 세그먼트를 보내는 경우

강제 종료 : TCP Reset요구 기능

 

TCP 4way handshaking은 정상 종료일 경우만 해당된다.

 

< TCP 4Way Handshake 절차 >
TCP 1way : 연결이 되어있는 상태에서 종료하려는 측(송신측)에서 TCP 헤더의 Flag 필드의 FIN 필드를 1로 세팅하여 전송하고 소켓을 FIN_WAIT_1 상태로 변경한다.
TCP 2way : FIN을 받은 수신측은 CLOSE_WAIT 상태로 변경되며 ACK을 전송한다.
ACK을 받은 송신측은 FIN_WAIT_2 상태로 변경되며 FIN을 기다린다.
 
TCP 3way : 수신측은 연결 종료를 위해 FIN 패킷을 송신측에 전송하며 소켓을 LAST_ACK 상태로 변경한다.
TCP 4way : FIN을 받은 송신측은 TIME_WAIT 상태로 변경되고 ACK을 수신측에 전송한다.
ACK을 받은 수신측은 소켓을 CLOSED 상태로 변경한다.
시간이 지난 뒤, 송신측도 소켓을 CLOSED 상태로 변경한다.

 

 

5) URLURI의 차이점

URI(Uniform Resource Identifier) : 통합 자원 식별자

ResourceURI로 식별이 가능한 모든 종류의 "자원"을 지칭한다. (ex. 웹 브라우저 파일, 그 외 리소스)

인터넷상의 리소스 자원 자체를 식별하는 고유한 문자열 시퀀스

 

URL(Uniform Resource Locator) : 통합 자원 위치

네트워크상에서 리소스의 "위치"를 나타내기 위한 규약이다.

웹 사이트 주소와 컴퓨터 네트워크 상의 자원을 나타낸다.

 

리소스명만 나타내면 URI, 프로토콜 + 주소 + 리소스명이 나타나면 URL이다.

'kitri 과제' 카테고리의 다른 글

1주차 HTTP 헤더(header)조사하기  (0) 2023.02.20