HTTP/네트워크 기본 지식

[HTTP] TCP란?

Boradoris 2023. 1. 16. 21:45

사용자가 어떠한 데이터를 다른 서버로 보내고자 한다면, 그 데이터는 어떠한 과정을 거치게 될까?

이에 대해서 앞서 올린 IP 프로토콜과 TCP 정보를 통해 간단하게 예시로 알아보자.

 

TCP란?

TCP란, 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.

 

인터넷 프로토콜 스택의 4 계층

인터넷 프로토콜에서는 그림과 같이 4가지의 계층이 존재한다.

데이터를 전달하는 과정을 프로토콜 계층을 통해 확인해 보자.

 

프로토콜 계층

원래는 좀 더 복잡하지만 예시를 위한 간단한 그림이다.

애플리케이션 계층에서는 말 그대로 우리가 흔히 컴퓨터를 통해 사용하는 애플리케이션을 담당한다.

웹 브라우저, 게임, 카카오톡 등이라고 생각하면 된다.

OS는 운영체제로 우리가 아는 윈도우나 맥, 리눅스 등이 있다.

네트워크 인터페이스는 LAN 드라이버나 LAN 장비 등을 말한다.

 

먼저, 채팅 프로그램에서 Hello, world!라는 메시지를 서버로 보낸다고 가정해 보자.

해당 메시지는 Socket 라이브러리를 통해 OS로 전달된다.

그러면 OS 계층에서 TCP 정보가 생성되고 메시지 데이터를 안에 담는다.

그다음, IP 패킷을 생성하여 생성했던 TCP 정보를 안에 담는다.

마지막으로 네트워크 인터페이스의 랜카드를 통해 서버로 전달한다.

 

TCP/IP 패킷 정보

전송하고자 하는 데이터를 TCP 세그먼트로 감싸고,

그 위에 IP 패킷으로 감싼 형태이다.

 

TCP 특징

  • 연결지향 - TCP 3 way handshake
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

 

TCP 3 way handshake

1. 클라이언트가 SYN이라는 접속 요청을 서버에게 보낸다.

2. 서버는 ACK라는 요청 수락과 함께 SYN을 클라이언트에게 보낸다.

3. 클라이언트가 ACK를 통해 요청을 수락한다.

 

hand shake 이후 연결이 완료된 클라이언트와 서버가 데이터를 송수신한다.

* 요즘은 최적화가 잘 되어있어서 3번의 ACK와 데이터를 같이 보내기도 한다.

 

데이터 전달 보증

TCP/IP에서는 데이터를 전송하였을 때, 서버로부터 응답을 보내주게 된다.

이를 통해 클라이언트는 데이터가 잘 전송되었는지 확인할 수 있다.

 

순서 보장

클라이언트가 그림과 같이 1,2,3의 순서로 패킷을 전달했다고 가정했을 때,

서버에게 1,3,2의 순서로 도착하게 되었다.

순서가 잘못되었으므로 서버는 잘못된 순번부터 다시 클라이언트에게 요청을 보낸다.

 


출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

'HTTP > 네트워크 기본 지식' 카테고리의 다른 글

[HTTP] URI, URL, URN이란?  (0) 2023.01.17
[HTTP] DNS란?  (0) 2023.01.17
[HTTP] Port란?  (0) 2023.01.17
[HTTP] UDP란?  (0) 2023.01.16
[HTTP] IP (인터넷 프로토콜)  (0) 2023.01.16