티스토리 뷰
TCP - States
TCP - Connection Establishment
3-Way Handshake
핸드셰이킹(handshaking)은 정보기술과 전기통신 및 관련 분야에서 채널에 대한 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정이다. 채널의 물리적인 확립이 잇따르며, 정상적인 정보 전송 이전에 이루어진다.
TCP는 안정적인 정보 전송을 보장하기 위해 3-Way Handshake 방식을 사용한다.
구체적인 진행 방식은 아래와 같다.
ISN(Initial Sequence Number)
클라이언트의 ISN이 0에서 시작하지 않고 무작위 난수로 설정되는 데에는 2가지 이유가 있다.
첫 번째로, TCP 연결의 포트 번호는 유한 범위에서 가져 오므로 시간이 지남에 따라 재사용된다.
따라서 두 통신 호스트가 과거에 사용 된 한 쌍의 포트 번호를 사용하고 있을 수 있다.
이때 서버는 같은 포트에서 전송된 패킷이 지연되어 수신했다고 생각할 수 있다.
아래는 Segment size가 100B인 두 클라이언트와의 통신에 문제가 생기는 예제이다.
하지만 예측하기 어려운 난수를 ISN으로 사용하는 경우 손실 된 세그먼트가 얼마 후에 수신 되더라도 동일한 시퀀스 번호를 다시 가질 기회가 적다.
두 번째 이유는 0에서 시작하는 ISN은 이어지는 SEQ을 쉽게 예측하게 만들어 TCP sequence prediction attack등의 공격에 취약해지는 이유이다. 이를 방지하기 위해 예측하기 어려운 임의의 ISN을 만든다.
TCP - Connection Termination
4-Way Handshake
TCP는 세션의 종료에 4-Way Handshake 방식을 사용한다.
구체적인 진행 방식은 아래와 같다.
참고문헌
https://ko.wikipedia.org/wiki/핸드셰이킹
https://asfirstalways.tistory.com/356
[Mind Net][ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake
HyacinthWiki - TCP 연결 상태 의미
'Study > CS' 카테고리의 다른 글
송신 포트 vs 수신 포트 (Source Port vs Destination Port) (0) | 2019.07.30 |
---|---|
TCP - Checksum (0) | 2019.07.16 |
TCP - Segment Structure (0) | 2019.07.12 |
TCP (0) | 2019.07.12 |
유니티 최적화 기법들 (0) | 2019.02.11 |