TCP 프로토콜
TCP가 하는 일
- 전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 함
- TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(UDP)을 사용
- TCP는 UDP보다 안전하지만 느림
TCP의 구조
안전한 연결을 지향하는 TCP 프로토콜
- window: 데이터를 얼마나 더 보내야할 지 알려줌
TCP 플래그
TCP 플래그의 종류
어떤 플래그를 셋팅하고 보내느냐에 따라서 연결 유형이 달라짐
TCP의 주된 기능이 플래그에 따라 나뉘어 짐
- U(Urgent Flag): 보내는 데이터에 급한 데이터가 있음
- 밑의 Urgent Pointer 와 셋트
- A(Acknowledgement Flag): 승인을 해주는 플래그
- P(Push Flag): TCP 버퍼에 관계 없이 계속해서 데이터를 밀어넣음
- R(Reset Flag): 연결을 새로고침
- S(Synchronization Flag): 상대방과 연결을 시작할 때 무조건 사용, 보내진 다음부터 연결 동기화 시작 (가장 중요!)
- F(Finish Flag): 종료
TCP를 이용한 통신과정
연결 수립 과정
TCP를 이용한 데이터 통신을 할 때, 프로세스와 프로세를 연결하기 위해 가장 먼저 수행되는 과정
- 클라이언트가 서버에게 요청 패킷을 보냄
- 서버가 클라이언트 요청을 받아들이는 패킷을 보냄
- 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄
위 3개 과정을 3 Way Handshake 라고 함
데이터 송수신 과정
TCP를 이용한 데이터 통신을 할 때, 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙
- 보낸 쪽에서 또 보낼 때에는 SEQ 번호와 ACK 번호가 그대로
- 받는 쪽에서 SEQ 번호 = 받은 ACK 번호
- 받는 쪽에서 ACK 번호 = 받은 SEQ번호 + 데이터의 크기
TCP 상태전이도
- 실선: 클라이언트의 상태 변화
- 점선: 서버의 상태 변화
- Listen
- 포트 번호를 열어놓고 있는 상태
- 서버가 프로그램을 사용하고 있는 상태
- 서버가 요청을 듣고 있는 상태
- Established
- 연결이 수립된 상태
참고자료
https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=21
위 강의를 보고 정리한 글입니다.
'Computer Science > 네트워크' 카테고리의 다른 글
11. www를 이용할 때 데이터를 주고 받는 방법 (7계층) (0) | 2023.08.30 |
---|---|
10. NAT와 포트 포워딩 (0) | 2023.08.17 |
08. 비연결지향형 UDP 프로토콜 (0) | 2023.08.11 |
07. 컴퓨터 프로그램끼리 데이터 주고 받는 방법 (4계층) (0) | 2023.08.10 |
06. 멀리 있는 컴퓨터 간의 통신 - IP 프로토콜 구조 (0) | 2023.08.08 |