공부하면서 쓰는 글입니다.
위 이론들을 알기 위해서는 기본부터 알아봐야 한다.
먼저 TCP가 무엇인지에서부터 시작하고, 그 다음 차근차근 알아보자.
TCP란
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜으로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.
인터넷 상에서 데이터를 메세지의 형태(세그먼트라는 블록 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다. TCP와 IP를 함께 사용하는데 , IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.
흐름제어
데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것
송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
혼잡제어
네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
전이중
전송이 양방향으로 동시에 일어날 수 있다.
점대점
각 연결이 정확히 2개의 종단점을 가지고 있다.
멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정
양 쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이, 다른 쪽이 준비가 됐다라는 것을 알 수 있도록 한다. 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
위 처럼 3번의 통신이 끝마치게 되면, 종단 간의 연결의 성립이 된 것이다.
이 때부터 실제 패킷을 주고받게 된다.
TCP의 연결 해제 과정을 칭하는 용어이다.
서버가 클라이언트로부터 ACK을 수신했다면, 소켓을 닫게된다. 그리고 TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫게 된다. 이로써 통신이 완벽히 해제되는 것이다.
통신이 총 4번 이루어지기 때문에 4-way Handshake 라는 용어를 사용한다.
https://velog.io/@haero_kim/TCP
https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html