TCP 프로토콜
- 전송 제어 프로토콜 ( Transmission Control Protocol, TCP )
- 연결 지향 프로토콜
- 인터넷에 연결된 컴퓨터에 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 해주는 프로토콜
- UDP보다 안전하지만 느리다
TCP 프로토콜 구조
- Source Port : 출발지 포트번호
- Destination Port : 도착지 포트번호
- Sequence Number :
- Acknowledgment Number :
- Offset :헤더의 길이를 4로 나눈 값
- Reserved
- TCP Flags - 연결 지향을 위한 값
- Window : 남아있는 TCP 버퍼 공간이 얼마나 남았는지 알려줌 ( "나 얼마만큼 남았으니까 이만큼 보내", 신뢰성 )
- Checksum
- Urgent Pointer : 어디서부터가 긴급 데이터인지 위치 알려주는 값 ( Urgent flag 와 세트 )
- TCP Options ( variable length, optional ) : IP 프로토콜의 옵션과 마찬가지로, 4Byte씩 총 10개 옵션이 붙을 수 있다. ( TCP 일반적인 길이 20Byte이며 최대 60Byte까지 늘어날 수 있음 )
TCP 플래그
TCP Flags - 연결 지향을 위한 값
- U : 긴급 비트( urgent bit ), 보내는 데이터의 우선순위가 높다고 지정
- A : 승인 비트( ACK bit ), 연결 승인이나 데이터 전송 승인 등 대답을 해주는 플래그
- P : 밀어넣기 비트( Push bit ), 원래 TCP 버퍼가 일정 크기 이상 쌓여야 패킷을 추가적으로 전송하는데 그것과 상관 없이 계속 밀어넣겠다는 플래그
- R : 초기화 비트( Reset bit ), 상대방과 연결되어있는 상태에서 문제가 발생하여 연결 상태를 새로고침하는 플래그
- S : 동기화 비트( Synk bit ), 상대방과 연결을 시작할 때 사용하는 플래그로 양쪽 상태를 동기화 함
- F : 종료 비트 ( fin bit ), 연결을 끊을 때 사용하는 플래그
TCP를 이용한 통신과정
연결 수립 과정
- TCP를 이용한 데이터 통신을 할 때 가장 먼저 수행되는 과정 ( 프로세스와 프로세스 연결 )
- 3Way Handshake
- 클라이언트가 서버에게 요청 패킷을 보내고 ( Syn )
- 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고 ( Ack & Syn )
- 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄 ( Ack )
- 단순히 패킷만 보내면서 연결하는 과정
데이터 송수신 과정
- TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 규칙
- 연결 수립 과정에서 3way handshake로 클라이언트가 ACK 보내면서 연결 완료
- 데이터 송수신 과정
- 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로다.
- 받는 쪽에서 SEQ번호는 받은 ACK번호가 된다.
- 받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터의 크기
- 패킷에 데이터를 담아 위 규칙대로 데이터 송수신을 합니다.
- 연결이 종료될 때는 프로그램에 따라 상이하다. ( ACK + FIN 동시에 보내거나, ACK 보내고 FIN 보내거나 )
TCP 상태전이도
TCP 연결 상태의 변화
- 실선 : Client의 상태 변화
- 점선 : Server의 상태 변화
주 상태 종류
- LISTEN : 포트 번호를 열어둔 상태 ( 서버 쪽에서 해당 포트 번호를 프로그램이 사용하고 있는 상태 )
- ESTABLISHED : 연결이 서로 수립 된 상태
다음 강의를 정리했습니다.
https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=21
https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=22
https://www.youtube.com/watch?v=Ah4-MWISel8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=23
https://www.youtube.com/watch?v=yY0uQf0BTH8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=24
'Computer Science > 네트워크' 카테고리의 다른 글
UDP 프로토콜 (0) | 2023.11.09 |
---|---|
4계층 ( Transport Layer ) (0) | 2023.11.09 |
IPv4 조각화 (0) | 2023.11.09 |
라우팅 테이블 (1) | 2023.10.28 |
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer ) (3) | 2023.10.28 |