티스토리 뷰

TCP 3 way handshake

  TCP는 데이터를 전송하기 전 안전한 전송을 위해 전송하고자 하는 상대방에게 데이터를 받을 수 있는 상황인지 확인하는 과정이다.

  

  ① 송신자는 상대방과 TCP 통신을 하고 싶으면 임의의 랜덤 값을 Sequence number로 설정하고, SYN 플래그를 1로 설정한 뒤 상대방
  에게 전송을 합니다.
  ② 상대방은 송신자가 보낸 패킷을 잘 받았다는 것을 알려주기 위해 Acknowledgement Number필드에 상대방에게 받은 Sequence
  Number에 1을 더한 값을 설정합니다. 그리고 상대방도 송신자가 본인이 보낸 값을 잘 받았는지 확인하기 위해 Sequence Number에
  본인이 생성한 값을 담아 송신자에게 전달합니다. 이 때 SYN, ACK 플래그에 1을 설정합니다.
  ③ 송신자는 ACK 에 본인이 보낸 값에 1이 더해진 것을 확인하여 상대방이 본인이 보낸 값을 잘 받았음을 확인합니다. 송신자 역시
  수신자에게 잘 받았음을 알려주기 위해 수신자가 보낸 Sequence Number에 1을 더해 Acknowledgement Number에 필드에 설정한
  뒤, ACK 플래그역시 1로 설정한 뒤 상대방에게 전송합니다.

TCP 4 way handshake

  TCP 연결설정을 했다면 연결 해제 작업역시 해야한다. 연결설정과는 다르게 4개의 과정을 거쳐 TCP 연결 해제를 하게된다.

  

  ① 연결을 끊기 위해 FIN 플래그가 설정된 패킷을 전송합니다.
  ② 상대방은 송신자가 보낸 FIN을 받고 ACK 플래그가 설정된 패킷을 송신자에게 보내고 CLOSED_WAIT 상태가 됩니다. 그리고
  자신이 남은 데이터가 있다면 전송을 합니다. 송신자는 ACK를 받은 뒤 남은 데이터를 받고 처리한 뒤 수신자가 FIN 플래그가
  설정된 패킷을 보낼 때 까지 기다립니다. 송신자는 FIN_WAIT_2 상태가 됩니다.
  ③ 데이터를 다 전송한 뒤 종료에 동의한다는 뜻으로 FIN 패킷을 보낸 뒤 송신자로부터 ACK을 받기 위해 LAST_ACK 상태로
  기다립니다.
  ④ 송신자는 FIN을 받은 뒤 확인했음을 알리기 위해 ACK 플래그가 설정된 패킷을 전송합니다. 그리고 상대방은 ACK 를 받고
  소켓을 닫습니다.
  ⑤ 송신자는 아직 받지못한 데이터가 있을 수 있기 때문에 TIME_WAIT 상태가 됩니다. TIME_WAIT 가 끝나게 되면 송신자도
  CLOSED 상태로 전환합니다.

'면접질문' 카테고리의 다른 글

[DB] 면접 스터디 (1)  (0) 2022.02.28
MVC 패턴  (0) 2022.01.30
API와 SDK  (0) 2022.01.30
[네트워크] HTTP  (0) 2022.01.02
[네트워크] TCP와 UDP  (0) 2022.01.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함