Post

NetWork[TCP-1]

TCP는 TCP/IP 모델 계층에서 전송 계층에 속합니다.

전 세계의 모든 HTTP 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP/IP를 통해 이루어집니다.

TCP의 장점중 하나는 순서를 유지하고, 메시지들이 손실되거나 손상없이 안전하게 전달된다는 점 입니다.

여기서 TCP는 커넥션을 맺을때 3-Way-Handshake라는 과정을 통해 TCP 커넥션이 맺어집니다.

예를 들어서 URL을 브라우저에 입력을 하면 다음과 같은 과정을 거치게 됩니다.

  1. 브라우저에 특정 URL을 입력합니다.
  2. 브라우저는 이 URP에 대한 IP 주소를 탐색하고, 포트 번호를 얻습니다.
  3. 브라우저는 탐색한 IP주소와, 얻은 포트 번호를 통해 TCP 커넥션을 맺습니다.
  4. 브라우저가 이제 서버로 HTTP GET요청을 보내고, 요청을 받은 서버는 로직을 처리한 다음 HTTP 응답 메세지를 브라우저에게 전달합니다.
  5. 브라우저가 커넥션을 끊습니다.

여기서 TCP는 커넥션을 끊을 때, 4-Way-handshake를 사용합니다.

TCP의 특징

신뢰할 수 있는 데이터 전송 통로

TCP 커넥션은 인터넷을 안정적으로 연결해주고, 데이터를 순서에 맞게 전달해줄 수 있습니다.

TCP스트림은 세그먼트로 나뉘어 IP패킷을 통해 전송됩니다.

TCP는 데이터를 전달할 때, IP 패킷 혹은 IP 데이터그램이라는 작은 조각을 통해 데이터를 전송합니다.

여기서 TCP/IP 프로토콜 스택에서는 4개의 계층을 통해 전달과정을 말하면, 먼저 애플리케이션 계층에서 HTTP 메시지를 생성하고, 현재 연결된 TCP 커넥션을 통해 이 메시지의 데이터 내용을 전송합니다.

TCP는 받은 메시지를 세그먼트라는 단위로 분할하여 네트워크 계층으로 전달합니다.

이후 네트워크 계층에서는 TCP 세그먼트를 IP 패킷으로 묶어서 목적지 IP 주소로 전달합니다.

데이터 링크 계층은 이 IP 패킷을 물리적인 매체를 통해 목적지로 보내어 인터넷을 통해 데이터가 전달되게 됩니다.

참고로 각 TCP 세그먼트는 하나의 IP주소에서 다른 IP 주소로 IP패킷에 담겨 전달됩니다.

IP패킷에는 다음과 같은 데이터가 담겨있습니다.

TCP-1

TCP 커넥션 유지

컴퓨터는 항상 TCP 커넥션을 여러개 가지고 있습니다. 이게 가능한 이유는 컴퓨터는 이러한 포트 번호를 통해서 이런 여러 개의 커넥션을 유지합니다.

TCP 커넥션은 발신자 IP주소, 발신자 포트, 수신사 IP 주소, 수신자 포트 총 4가지의 값을 가지고 있습니다.

커넥션발신지 IP주소발신지 포트목적지 IP주소목적지 포트
A209.1.32.342034204.62.128.584000
B209.1.32.353227204.62.128.584140
C209.1.32.353105207.25.71.2580
D209.1.33.595100207.25.71.2580

여기서 TCP 커넥션이 여러개가 존재하는게 가능한 이유는, 각 커넥션 일부의 값은 같을 수 있지만, 전부 같을수는 없기 때문입니다.

This post is licensed under CC BY 4.0 by the author.