TCP 헤더 및 제어 플래그 구조
3-way handshaking
clinent와 server가 TCP 통신을 하기위해서 3-way handshaking을 거친다. 방식은 다음과 같다.
client가 연결을 요청하는 SYN=1을 server에 보낸다. (SYN은 TCP 패킷 TCP 헤더의 flag이다.)
server는 clinent의 요청을 받으면 SYN,ACK를 함께 client에 보낸다.
clinent는 ACK를 보낸다.
위의 방법은 통신전 초기화를 위해 4-way handshaking를 사용한다.
4-way handshaking
통신을 종료하고자 하는 clinent가 server에게 FIN패킷을 보내고 자신은 FIN_WAIT_1 상태로 대기한다.
FIN패킷을 받은 server는 CLOSE_WAIT로 바꾸고 잘 받았다는 ACK를 clinent에게 보낸다. ACK를 받은 client는 상태를 FIN_WAIT_2로 변경한다. 그와 동시에 client는 해당 포트에 연결된 Application에게 Close()를 요청한다.
Close() 요청을 받은 Application은 종료 프로세스를 진행시킨다. server는 FIN 패킷을 Client에게 전송한 후 자신은 LAST_ACK로 상태를 바꾼다.
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 |