COMPUTER_SCIENCE

TCP 통신

서울소시민 2018. 4. 24. 17:25

TCP 통신

TCP 헤더 및 제어 플래그 구조

3-way handshaking

clinent와 server가 TCP 통신을 하기위해서 3-way handshaking을 거친다. 방식은 다음과 같다.

  1. client가 연결을 요청하는 SYN=1을 server에 보낸다. (SYN은 TCP 패킷 TCP 헤더의 flag이다.)

  2. server는 clinent의 요청을 받으면 SYN,ACK를 함께 client에 보낸다.

  3. clinent는 ACK를 보낸다.

위의 방법은 통신전 초기화를 위해 4-way handshaking를 사용한다.

4-way handshaking

  1. 통신을 종료하고자 하는 clinent가 server에게 FIN패킷을 보내고 자신은 FIN_WAIT_1 상태로 대기한다.

  2. FIN패킷을 받은 server는 CLOSE_WAIT로 바꾸고 잘 받았다는 ACK를 clinent에게 보낸다. ACK를 받은 client는 상태를 FIN_WAIT_2로 변경한다. 그와 동시에 client는 해당 포트에 연결된 Application에게 Close()를 요청한다.

  3. Close() 요청을 받은 Application은 종료 프로세스를 진행시킨다. server는 FIN 패킷을 Client에게 전송한 후 자신은 LAST_ACK로 상태를 바꾼다.

  4. clinent가 FIN_WAIT_2 상태에서 server가 보낸 FIN을 받으면 받았다는 ACK를 Server에게 전송하고, 자신은 TIME_WAIT으로 상태를 바꾼다. (TIME_WAIT에서 일정시간이 지나면 CLOSED 되게 된다.) 최종으로 ACK를 받은 server는 자신의 포트도 CLOSED로 상태가 변경된다.


'COMPUTER_SCIENCE' 카테고리의 다른 글

HTTP Redirection  (0) 2018.05.09
CPU 스케줄링  (0) 2018.04.24
정보처리기사 신기술 빈출 용어 정리  (0) 2017.10.08