[CS] TCP

집중맞은 도둑력·2024년 7월 16일

CS

목록 보기
9/10
post-thumbnail

현재 포스트는 이후에 습득한 지식으로 인해 내용이 추가, 수정, 삭제될 수 있음

0. 🔖 목차


  1. TPC(Transmission Control Protocol) 개요
  2. 연결 지향성(TCP handshake)
  3. 혼잡 제어

1. TCP(Transmission Control Protocol) 개요


IP(Internet Protocol)를 통해 통신하는 두 호스트 간의 데이터를 신뢰성있고 안정적이게 교환하기 위한 전송 제어 프로토콜이다.

TCP는 송신자의 데이터를 패킷이라는 작은 단위로 쪼개서 전송하고 수신측이 이 패킷을 순서에 맞게 재조립하여 수신하는 방식이다.

아래 3 목차는 TCP 통신의 과정을 시작, 중간, 종료 순서로 나타낸 목차다.

2. 시작 - 3-Way Handshake


아무래도 원래 데이터를 작은 단위로 분해하다 보니 신뢰성 있는 데이터 전송을 보장해야한다. 위해 데이터 전송을 시작하기 전에 송신자와 수신자 간에 연결을 설정한다.

이를 위해 세 가지 단계로 이루어진 'Three-Way Handshake' 과정을 거친다.

이 과정은 두 호스트간의 초기 시퀀스 번호(ISN, Initial Sequence Number, 패킷의 번호를 보고 재조립하기 위해 필요함)를 주고 받으며 연결이 되었다는 사실을 확정하기 위함이다.

1. SYN (Synchronize)

제일 먼저 클라이언트는 서버에게 연결 요청을 보내기 위해 SYN 패킷을 전송. 이 패킷에는 초기 시퀀스 번호(ISN, Initial Sequence Number)가 포함.

2. SYN-ACK (Synchronize-Acknowledge)

서버는 클라이언트의 SYN 패킷을 수신하고, 이를 확인했다는 의미로 SYN-ACK 패킷을 클라이언트에게 전송. 이 패킷에는 서버의 ISN과 클라이언트의 SYN 패킷에 대한 응답으로서의 ACK 번호가 포함.

3. ACK (Acknowledge)

클라이언트는 서버의 SYN-ACK 패킷을 수신하고, 이를 확인했다는 의미로 ACK 패킷을 서버에게 전송. 이제 연결이 성립되었으며, 데이터를 전송할 준비가 완료됨을 의미.

3. 중간 - 신뢰성 있는 데이터 전송


순서 보장

각 데이터 패킷에는 시퀀스 번호가 부여되어 순서대로 전송. 수신자는 시퀀스 번호를 사용하여 원래 데이터의 순서를 복원.

오류 검출 및 수정

TCP는 각 패킷에 체크섬을 포함시켜 데이터의 무결성을 검증. 수신자가 오류가 있는 패킷을 발견하면, 송신자에게 재전송을 요청.

흐름 제어

TCP는 수신자의 버퍼 오버플로우를 방지하기 위해 흐름 제어를 수행. 수신자는 자신이 처리할 수 있는 데이터의 양을 송신자에게 알려줌.

혼잡 제어

네트워크 혼잡을 방지하기 위해 TCP는 혼잡 제어 알고리즘을 사용. 송신자는 네트워크 상태를 모니터링하고, 혼잡이 감지되면 전송 속도를 조절.

4. 종료 - 4-Way Handshake


1. FIN (Finish)

클라이언트가 연결을 종료하고자 할 때 FIN 패킷 전송

2. ACK (Acknowledge)

서버는 클라이언트의 FIN 패킷을 수신하고, 이를 확인했다는 의미로 ACK 패킷을 클라이언트에게 전송.

3. FIN (Finish)

서버도 자신의 데이터 전송을 종료하기 위해 FIN 패킷 전송

4. ACK (Acknowledge)

클라이언트는 서버의 FIN 패킷을 수신하고, 이를 확인했다는 의미로 ACK 패킷을 서버에 전송

profile
틀린_내용이_있다면_말해주세요.

0개의 댓글