IP 프로토콜에서 중간에 피킷이 손실되고 순서가 상이한 문제들을 TCP 프로토콜이 해결해준다. “Hello world”라는 메시지를 보낼 때 SOCKET 라이브러리들을 통해서 OS 계층에서 TCP 정보를 감싼다. 그 밑에 IP 패킷이 생서되서 IP 와 관련된 정보도 있고 그 안에 TCP와 관련된 정보가 있다. 이 메시지를 랜카드를 통해서 나갈 때 Ethernet frame 을 포함해서 나가게 된다.
TCP와 관련된 정보에는 출발지 PORT, 목적지 PROT, 전송제어, 순서, 검증 정보 등이 들어감. IP 프로토콜에서 해결이 안된 순서 제어 문제들이 TCP 프로토콜이 해결이 되고 전송 데이터를 넣게 된다.
1. SYN(Synchronize) 접속 요청 메시지 전송 / 접속 요청
2. SYN + ACK : 응답 메시지와 함께 접속 요청 메시지를 같이 보낸다.
3. ACK(Acknowledge) : 요청을 응답하며 이제 양측이 연결이 되었음을 보장할 수 있게 된다. / 요청 수락
4. 데이터 전송 : 이제 데이터를 송신 혹은 수신할 수 있다.
* 위에 TCP 연결이 되었다고 연결이 된게 아니라 개념적으로 연결되어 있을 뿐이다. 인터넷 망에 있는 수 많은
서버들이 연결되어 있는 건지 잘 모른다.
🚀 참고 : 여기서 두 노드 사이에 다른 노드들이 연결되어 있는지는 알 수 없다.
(사실 별로 상관도 없다. 양측이 연결되어 있다는 결론만이 중요)
🚀 참고 : 최근에는 최적화가 되어 클라이언트에서 응답(ACK)을 보낼 때 데이터도 같이 전송을 한다.
: 클라이언트에서 데이터를 전송하면 서버측에서는 데이터가 잘 왔는지 응답을 해주기 때문에 데이터 전달을 보증할 수 있다.
: 메시지에 TCP 프로토몰이 포함되어 있으면 메시지를 전송할 때 서버에서 잘 받았다고 다시 보내는데 클라이언트가 메시지를 잘 전달 됐는지 안됐는지 이해를 할 수 있다.
순서 보장
: TCP 정보에는 순서와 같은 정보들이 포함되어 있기 때문에, 패킷의 순서가 잘못된 경우 서버에서 잘못된 패킷을 기준으로 재송신을 요청하여 패킷을 받기 때문에 순서를 보장할 수 있다.
🤖 참고 : 체크섬(checksum)
: 중복 검사의 한 형태로 송신된 자료의 무결성을 보호하는 방법으로 네트워크를 통해 전달되는 값이 위/변조 되는 경우를 대비해 체크섬 값을 같이 보내 무결성을 보호한다.
출처 :
김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하면서 정리한 내용입니다.
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의