TCP 프로토콜
TCP 프로토콜은 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송 계층 프로토콜이며, 인터넷 환경에서 기본으로 사용
- 연결형 서비스를 제공
- 전이중(Full Duplex) 방식의 양방향 가상 회선을 제공
- 신뢰성 있는 데이터 전송을 보장
- 응용계층에서는 서비스에 종류에 따라 FTP, SMTP, DNS, NFS 등을 제공.
(응용계층의 서비스가 어떤 유형이느냐에 따라 연결형TCP 혹은 비연결UDP가 결정됨)
- 전송 계층에서는 연결형 TCP, 비연결형 UDP를 지원
- 네트워크 계층에서는 IP와, ICMP 사용
- 네트워크 접속 계층에서는 Ethernet, x.25 등 프로토콜을사용.
TCP 헤더 구조
- TCP는 데이터를 세그먼트(Segment)라는 블록 단위로 분할해 전송
- Options / Padding 필드는 생략할 수 있고, TCP 헤더의 최소 크기는 20 Byte임
- Options필드는 다양한 종류의 부가 정보를 전달하는 데 사용. 잘 사용 X
- Padding 필드는 헤더의 크기를 4바이트 단위로 맞추려고 사용
Source Port
- 송신측(출발지) 포트번호
Destination Port
- 수신측(도착지) 포트번호
Sequence Number
- 송신 프로세스가 지정하는 순서번호. 세그먼트 전송 과정에서 전송되는 바이트 수를 기준으로 증가.
- 최초 데이터를 전송할 때는 임의의 순서 번호를 선택해 전송함. 이는 전송 연결이 예기지 않은 이유로 끊겼을 때 순서
번호가 혼선되는 것을 방지하기 위함임
Acknowledgement Number
- 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용.
- 필드값은 ACK 플래그 비트가 지정된 경우에만 유효하며 다음에 수신을 기대하는 데이터의 순서 번호를 표시
- 응답을 받은 송신 프로세스는 ACK_Num - 1 까지의 모든 데이터가 올바르게 전송되었음을 감지할 수 있음.
(연결 설정이나 연결 해제처럼 데이터 세그먼트가 없는 경우에도 순서 번호가 1씩 증가한다는 점에 유의)
Data Offset
- TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타내므로 TCP 헤더의 크기가 됨.(32bit 워드 단위)
Reserved
- 예약 필드. 잘 사용 X
Flags
- 처음 2bit 는 혼잡 제어 용도로 사용. 나머지 6개 필드는 각 의미를 갖음. (밑에 설명할것임)
Window
- 슬라이딩 윈도우 프로토콜에서 수신 윈도의 버퍼 크기를 지정하려고 사용하며, 수신 프로세스가 수신할 수 있는 바이
트의 수를 표기. (Window 필드가 0이면 수신 프로세스의 버퍼가 다 찼다는 의미이기 때문에, 데이터를 더 보내면 안됌)
Checksum
- TCP 세그먼트에 포함되는 오류를 검출하려고 사용함.
Urgent Pointer
- 긴급 데이터를 처리하기 위한 필드. Flags 필드의 URG 플래그 비트가 지정된 경우에만 유효함.
- 송신 프로세스가 긴급히 처리하려는 데이터를 전송할 수 있음.
(Sequence number = 2000, Urgent Pointer = 100 인 패킷을 전송하면 Sequence number가 2000 ~ 2099인 데이터는
긴급 전송되고, 2100번 부터는 다시 정상 데이터로 전송)
Options / Padding
- 필드는 생략할 수 있고, TCP 헤더의 최소 크기는 20 Byte임
- Options필드는 다양한 종류의 부가 정보를 전달하는 데 사용. 잘 사용 X
- Padding 필드는 헤더의 크기를 4바이트 단위로 맞추려고 사용
TCP 헤더의 Flags 비트
ECE / CWR (Explict Congestion Notification Echo / Congestion Window Reduced)
- ECN(Explicit Congestion Notification) 기능을 지원하기위해 정의된 플래그임.
(ECN은 라우터가 송신 프로세스에 명시적으로 혼잡 발생을 알려주어 송신 프로세스 스스로 트래픽을 완화하는 기술)
- ECE 플래그는 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알리려고 사용.
- CWR 플래그는 ECE비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지하는 것이 목적이며, 더 이상의
ECE를 보내지 말라는 의미.
URG
- Urgent Pointer 필드가 유효한지를 나타냄. 수신 프로세스의 응용 계층에 긴급 데이터가 도착했음을 알리는 것으로, 데
이터가 응용 계층에 전달되기 전에 긴급 데이터가 왔음을 미리 알려주어 대비할 수 있음
ACK
- Acknowledgement Number 필드가 유효한지 나타냄.
- 피기배킹 방식의 양방향 통신 환경에서, 양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면 최초 연결 설정 과
정에서 전송되는 첫 번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트가 1로 지정됨.
PSH
- 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달하도록 지시할 때 사용.
- 수신프로세스로부터 PSH세그먼트에 대한 응답 프레임이 도착하면, 프레임의 Acknowledgement Number 필드에 표시
한 숫자까지의 모든 데이터가 상대 프로세스의 상위 계층에 전달되었음을 의미.
RST
- 연결 리셋이나, 유효하지 않은 세그먼트에 대한 응답용으로 사용.
- 비정상 종료
SYN
- 연결 설정 요구를 의미하는 플래그. 가상 회선 연결을 설정하는 과정에서 사용.
FIN
- 한쪽 프로세스에서 더는 전송할 데이터가 없어 연결을 종료하고 싶다는 의사 표시를 상대방에게 알리려고 사용
- FIN으로의 연결 해제는 양쪽 프로세스 모두가 FIN 플래그를 전송해야 완료됨.
- 정상 종료
혼잡 제어
ECN (Explicit Congestion Notification) 기능
- 라우터가 송신 프로세스에 명시적으로 혼잡 발생을 알려주어 송신 프로세스 스스로 트래픽을 완화하는 기술
- CWR : ECE비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지
- ECE : ECN-Echo로 약칭, 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알려리고 사용
캡슐화
TCP 프로토콜은 IP 헤더에 캡슐화되어 데이터 링크 계층으로 보내짐
포트 번호
- TCP와 UDP가 상위 계층에 제공하는 주소 표현 방식
- Well-Known 포트 : 인터넷 환경에서 많이 사용하는 포트 번호
FTP 데이터 채널 : 20
FTP 제어 채널 : 21
Telnet : 23
SMTP : 25
DNS : 53
TFTP : 69
HTTP : 80
rlogin : 513
rsh : 514
portmap : 111
'Network > Computer Science' 카테고리의 다른 글
[Network] UDP 프로토콜 (0) | 2021.12.09 |
---|---|
[Network] TCP 프로토콜 (2) (0) | 2021.12.08 |
[Network] 전송 계층의 기능 (0) | 2021.12.03 |
[Network] IGMP 프로토콜 (0) | 2021.12.01 |
[Network] ICMP 프로토콜 (0) | 2021.12.01 |