1) TCP 헤더 조사

< 구성 >
• 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) TCP와 UDP의 차이점
| 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 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 연결 종료에는 정상 종료, 반 종료, 동시 종료, 강제 종료 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) URL과 URI의 차이점



URI(Uniform Resource Identifier) : 통합 자원 식별자
Resource란 URI로 식별이 가능한 모든 종류의 "자원"을 지칭한다. (ex. 웹 브라우저 파일, 그 외 리소스)
인터넷상의 리소스 자원 자체를 식별하는 고유한 문자열 시퀀스
URL(Uniform Resource Locator) : 통합 자원 위치
네트워크상에서 리소스의 "위치"를 나타내기 위한 규약이다.
웹 사이트 주소와 컴퓨터 네트워크 상의 자원을 나타낸다.
리소스명만 나타내면 URI, 프로토콜 + 주소 + 리소스명이 나타나면 URL이다.
'kitri 과제' 카테고리의 다른 글
| 1주차 HTTP 헤더(header)조사하기 (0) | 2023.02.20 |
|---|