‡Computer Science ‡/º 네트워크

[네트워크] TCP 연결 과정

Trudy | 송연 2024. 7. 12. 02:28

TCP 연결의 특징

  • 1:1 연결을 할 수 있다. (1명의 sender, 1명의 receiver)
  • 신뢰성이 높고, in-order byte stream으로 순서가 바뀌지 않는다
  • 한 connection에서 양방향으로 보낼 수 있다.
  • connection-oriented 연결 지향
  • MSS(maximum segment size)가 있어서 엄청 큰 이미지 파일을 tcp로 보낸다고 해도, mss 단위로 쪼개져서 보내진다.

TCP Segment의 구조

TCP Segment는 위처럼 다양한 값들을 저장한다. 

 

  • Port Number : 가장 위에는 어디에서 왔고, 어디로 가는 지를 지정
  • Segment sequence number : bytestream에서의 byte 수.
    • MMS가 1000인 경우, 1번째 segment의  sequence number은 0, 2번째 segment는 1000, 3번째 segment는 3000
  • ACK number: 다음에 받아야하는 Sequence number

다음은 위 Sequence number과 ACK number의 예시이다.

 

Host A와 B가 TCP 연결을 하고 데이터를 주고 받고 있다고 할 때, 

 

1.Host A가 B에게  data 'C'를 B에게 보냄. 

  • 현재 Segment number인 42와, 다음에 받아야하는 Segment number인 ACK = 79를 함께 보낸다

2. Host B가 데이터 C를 받고 잘 받았다고 echo를 보내준다. 

  • 현재 Segment number인 79와 다음에 A로부터 받아야하는 Segment Number인 43(42+1)을 함께 보낸다. 

.....

 

전송의 문제가 생겨서 재전송이 일어나는 경우

 

B가 데이터를 잘 받았는데, ACK을 A에게 보낸게 잃어버리게 된 상황

ACK이 오지 않았으니 Host A는 다시 데이터를 보내고, 다음 번 ACK은 A에게 잘 전달되어 해결된다. 

너무 빨리 timeout이 걸려있어서, 사실 data들이 잘 도착했는데, ACK이 제 시간 안에 도착하지 못해 유실되게 된다. 

ACK=120이라는 가장 마지막 ACK만 다시 보내줌으로써 잘 도착했음을 알려줘서 해결한다. 

 

TCP 3-way Handshake 연결 과정

  1. 서버는 Connection을 위해 LISTEN 중인 상태이다.
  2. Connection 요청 - Client는 서버와 연결하기 위해 TCP SYN 메세지를 보낸다.
  3. 서버는 연결할 수 있다고 SYN ACK 메세지를 보낸다. 
  4. 클라이언트는 SYN ACK를 받고, SYNACK에 대한 ACK를 서버에게 보낸다. 
    • 실제로는 여기서 data를 함께 보내서 전송의 개수를 줄인다고 한다.