TCP: Difference between revisions
From IT Wiki
No edit summary |
(→TCP 헤더) |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== 플래그 == | [[분류:네트워크]] | ||
; 좀 더 상세한 내용은 [[TCP 제어 플래그|TCP 제어 플래그 문서]] 참조 | [[분류:정보처리기사]] | ||
* '''SYN''' : TCP Connection의 최초 접속 시 연결을 요구하는 플래그 | [[분류:정보보안기사]] | ||
* '''ACK''' : 응답 확인 플래그 | [[분류:프로토콜]] | ||
* '''PSH''' : 데이터를 버퍼링하지 않고 즉석에서 수신자에게 송신하는 것을 요구하는 플래그 | |||
* '''URG''' : 긴급 포인터 플래그 | ;Transmission Control Protocol | ||
* '''FIN''' : 접속 종료 플래그 (정상 종료) | ;'''양종단 호스트 내 프로세스 상호 간에 신뢰적인 연결지향성 서비스를 제공하는 전송 계층 프로토콜''' | ||
* '''RST''' : 접속 종료를 위한 리셋 플래그 (강제 종료) | |||
== TCP의 특징 == | |||
*신뢰성 있는 연결을 지향한다. | |||
*세그먼트에 순번을 지정하여 데이터의 순서를 유지한다. | |||
*3-Way Handshaking을 통해 연결하고 4-Way Handshaking을 통해 연결을 종료한다. | |||
== TCP 헤더 == | |||
[[파일:TCP 세그먼트 헤더.jpg]] | |||
* Source Port : 출발지 포트번호 | |||
* Destination Port : 목적지 포트번호 | |||
* Sequence Number : 바이트 단위로 순서화되는 번호로, 이것을 통해 신뢰성(3-Way Handshake) 및 흐름제어(sliding Window) 기능 제공 | |||
* Acknowledgment Number : 수신하기를 기대하는 다음 byte 번호 (마지막으로 수신에 성공한 번호의 +1) | |||
* Offset : 헤더 길이 필드이며 IPv4와 마찬가지로 나누기 4 계산 후 2진수로 작성됨 | |||
* Reserved : 예약된 필드, 현재 사용되지 않음 | |||
* Window : 자신의 수신 버퍼 여유용량 크기를 통보하여 얼마만큼의 데이터를 받을 수 있는지 상대방에게 알려주어 흐름제어를 수행하게 되는 필드 | |||
* [[TCP 제어 플래그]] | |||
** U (Urgent) : 긴급 비트, 내가 지금 보내는 데이터가 우선순위가 높음. Urgnet Pointer와 세트 | |||
** A (Ack) : 승인 비트, 물어본거에 대한 응답을 해줄 때 사용됨 | |||
** P (Push) : 밀어넣기 비트, TCP 버퍼가 일정한 크기만큼 쌓여야 하는데 이거 상관없이 데이터를 계속 밀어 넣겠다 | |||
** R (Reset) : 초기화 비트, 상대방과 연결이 되어있는 상태에서 어떤 문제 등이 발생하여 연결 상태를 리셋하게 됨 | |||
** S (Syn) : 동기화 비트, 상대방과 연결을 시작할때 무조건 사용되는 플레그 | |||
** F (Fin) : 종료 비트 | |||
* Urgent Pointer : 어디서부터 긴급 값인지 알려주는 플래그 (TCP Flags의 U와 세트) | |||
==플래그== | |||
;좀 더 상세한 내용은 [[TCP 제어 플래그|TCP 제어 플래그 문서]] 참조 | |||
*'''SYN''' : TCP Connection의 최초 접속 시 연결을 요구하는 플래그 | |||
*'''ACK''' : 응답 확인 플래그 | |||
*'''PSH''' : 데이터를 버퍼링하지 않고 즉석에서 수신자에게 송신하는 것을 요구하는 플래그 | |||
*'''URG''' : 긴급 포인터 플래그 | |||
*'''FIN''' : 접속 종료 플래그 (정상 종료) | |||
*'''RST''' : 접속 종료를 위한 리셋 플래그 (강제 종료) | |||
==3-Way Handshaking== | |||
;TCP 연결 수립 과정 | |||
[[image:3-way-handshake.png|500px|http://www.mdpi.com/2076-3417/6/11/358/htm]] | [[image:3-way-handshake.png|500px|http://www.mdpi.com/2076-3417/6/11/358/htm]] | ||
== 4-Way Handshaking == | ==4-Way Handshaking== | ||
; TCP 연결 종료 과정 | |||
# [Client(FIN_WAIT1) -> Server(CLOSE_WAIT)] FIN+ACK | ;TCP 연결 종료 과정 | ||
# [Client(FIN_WATI2) <- Server(CLOSE_WAIT)] ACK | |||
# [Client(TIME_WAIT) <- Server(LAST_ACK)] FIN+ACK | #[Client(FIN_WAIT1) -> Server(CLOSE_WAIT)] FIN+ACK | ||
# [Client(TIME_WAIT) -> Server(CLOSED] ACK | #[Client(FIN_WATI2) <- Server(CLOSE_WAIT)] ACK | ||
#[Client(TIME_WAIT) <- Server(LAST_ACK)] FIN+ACK | |||
#[Client(TIME_WAIT) -> Server(CLOSED] ACK | |||
==같이 보기== | |||
*[[TCP/IP]] | |||
*[[UDP]] |
Latest revision as of 20:08, 3 February 2022
- Transmission Control Protocol
- 양종단 호스트 내 프로세스 상호 간에 신뢰적인 연결지향성 서비스를 제공하는 전송 계층 프로토콜
TCP의 특징[edit | edit source]
- 신뢰성 있는 연결을 지향한다.
- 세그먼트에 순번을 지정하여 데이터의 순서를 유지한다.
- 3-Way Handshaking을 통해 연결하고 4-Way Handshaking을 통해 연결을 종료한다.
TCP 헤더[edit | edit source]
- Source Port : 출발지 포트번호
- Destination Port : 목적지 포트번호
- Sequence Number : 바이트 단위로 순서화되는 번호로, 이것을 통해 신뢰성(3-Way Handshake) 및 흐름제어(sliding Window) 기능 제공
- Acknowledgment Number : 수신하기를 기대하는 다음 byte 번호 (마지막으로 수신에 성공한 번호의 +1)
- Offset : 헤더 길이 필드이며 IPv4와 마찬가지로 나누기 4 계산 후 2진수로 작성됨
- Reserved : 예약된 필드, 현재 사용되지 않음
- Window : 자신의 수신 버퍼 여유용량 크기를 통보하여 얼마만큼의 데이터를 받을 수 있는지 상대방에게 알려주어 흐름제어를 수행하게 되는 필드
- TCP 제어 플래그
- U (Urgent) : 긴급 비트, 내가 지금 보내는 데이터가 우선순위가 높음. Urgnet Pointer와 세트
- A (Ack) : 승인 비트, 물어본거에 대한 응답을 해줄 때 사용됨
- P (Push) : 밀어넣기 비트, TCP 버퍼가 일정한 크기만큼 쌓여야 하는데 이거 상관없이 데이터를 계속 밀어 넣겠다
- R (Reset) : 초기화 비트, 상대방과 연결이 되어있는 상태에서 어떤 문제 등이 발생하여 연결 상태를 리셋하게 됨
- S (Syn) : 동기화 비트, 상대방과 연결을 시작할때 무조건 사용되는 플레그
- F (Fin) : 종료 비트
- Urgent Pointer : 어디서부터 긴급 값인지 알려주는 플래그 (TCP Flags의 U와 세트)
플래그[edit | edit source]
- 좀 더 상세한 내용은 TCP 제어 플래그 문서 참조
- SYN : TCP Connection의 최초 접속 시 연결을 요구하는 플래그
- ACK : 응답 확인 플래그
- PSH : 데이터를 버퍼링하지 않고 즉석에서 수신자에게 송신하는 것을 요구하는 플래그
- URG : 긴급 포인터 플래그
- FIN : 접속 종료 플래그 (정상 종료)
- RST : 접속 종료를 위한 리셋 플래그 (강제 종료)
3-Way Handshaking[edit | edit source]
- TCP 연결 수립 과정
4-Way Handshaking[edit | edit source]
- TCP 연결 종료 과정
- [Client(FIN_WAIT1) -> Server(CLOSE_WAIT)] FIN+ACK
- [Client(FIN_WATI2) <- Server(CLOSE_WAIT)] ACK
- [Client(TIME_WAIT) <- Server(LAST_ACK)] FIN+ACK
- [Client(TIME_WAIT) -> Server(CLOSED] ACK