TCP/IP 프로토콜은 컴퓨터 간의 효과적인 통신을 가능케 하는 중요한 통신 규약입니다. 이는 주로 두 가지 프로토콜, 즉 IP와 TCP로 이루어져 있다.
또한, TCP/IP를 사용하는 시스템은 보통 클라이언트와 서버로 나뉘며, 이 두 요소 간에 데이터를 주고받는다.
데이터를 제공하는 역할을 한다. 웹 서버는 클라이언트의 요청에 따라 데이터를 제공하는 서버 역할을 한다.
또한, 서버는 특정 포트에서 클라이언트의 연결 요청을 기다리는데, 이를 "리슨"이라고 한다. 서로 다른 서버는 서로 다른 포트를 사용하여 동시에 작동할 수 있으며, 이는 네트워크에서 서로 다른 서비스를 효과적으로 구분하고 관리하기 위함이다.
데이터 세그먼트화
TCP는 큰 데이터를 작은 세그먼트로 나누어 처리한다. 마치 큰 사진을 작은 조각으로 나누어 보내듯이, 데이터를 작은 덩어리로 쪼개어 전송한다. 이후 각각의 작은 세그먼트에는 TCP라는 프로토콜에 관한 정보를 담은 헤더가 추가된다. 이 헤더는 전송 중에 필요한 제어 정보들을 담고 있어, 데이터가 올바르게 전송되고 도착하는 것을 보장한다.
연결 수립
연결 수립 단계에서 TCP는 마치 안부를 묻는 3단계 인사처럼 동작한다. 처음으로 클라이언트가 서버에게 "안녕하세요! 연결해주세요!"라는 메시지(SYN 요청)를 보낸다. 서버는 이에 "안녕하세요! 연결할게요!"라는 메시지(SYN-ACK 응답)로 응답한다. 마지막으로 클라이언트는 "알겠어요, 연결해주세요!"라는 메시지(ACK 응답)를 보내면 연결이 완료된다. 이 과정을 통해 클라이언트와 서버가 서로 통신을 시작할 준비를 마친다.
데이터 전송
TCP는 데이터 세그먼트를 전송하고 수신 확인 응답을 기다린다. 데이터의 순서를 보장하고 손실된 세그먼트를 재전송한다.
흐름 제어
TCP는 수신자의 버퍼 상태에 따라 데이터를 보내는 속도를 조절하여 과부하를 방지한다.
연결 종료
데이터 송수신이 끝나면 클라이언트와 서버는 FIN 세그먼트를 교환하여 연결을 종료한다.
이렇게 연결을 맺은 후, 클라이언트와 서버 양쪽 모두 '소켓'이라는 통신 토큰을 얻는다. 그리고 이 소켓을 통해 양방향으로 데이터를 주고받게 된다. 이 방식은 여러 클라이언트가 한 대의 서버에 접속할 때 유용하게 사용된다. 각 클라이언트와 서버 간에 중복되지 않는 소켓 번호가 할당되므로, 서버는 이 소켓 값을 이용하여 각 클라이언트를 쉽게 식별하고 구분할 수 있다.
HTTP 프로토콜은 인터넷에서 데이터를 주고 받을 때 사용하는 표준 프로토콜 중 하나이다. 이 HTTP 프로토콜은 TCP/IP 프로토콜 위에서 동작하는 응용 프로토콜이다. 웹 서버가 HTTP 프로토콜을 이용해 데이터를 주고 받기 위해서는 TCP/IP 프로토콜을 사용하는 것이 필요하다. 따라서 웹 서버는 항상 클라이언트(웹 브라우저 등)의 요청에 응답할 수 있도록, 특정한 포트를 리슨하고 대기하게 된다. 이를 통해 클라이언트와 서버는 효과적으로 데이터를 주고 받을 수 있게 된다.
요청-응답 모델
HTTP는 클라이언트가 서버에 요청(Request)을 보내면, 서버는 요청에 해당하는 응답(Response)을 제공하는 모델을 사용한다.
무상태(Stateless)
HTTP는 기본적으로 요청 간의 상태 정보를 유지하지 않는다. 각각의 요청은 독립적으로 처리되며, 이전 요청과 관련된 정보는 서버에서 관리하지 않는다.
텍스트 기반
HTTP 헤더와 본문은 텍스트 형식으로 구성되어 있다. 이러한 특성으로 인해 데이터를 읽고 디버깅하기 쉽다. 또한 HTML 문서, 이미지, 동영상 등의 다양한 유형의 데이터도 전송할 수 있다.
요청 메서드
HTTP 요청은 여러 가지 메서드를 사용하여 서버에 원하는 작업을 전달한다. 일반적으로 사용되는 메서드에는 GET, POST, PUT, DELETE 등이 있다.
URL(Uniform Resource Locator)
요청의 목적지를 가리키는 주소로, 웹 리소스의 위치와 이름을 나타낸다.
TCP/IP는 데이터의 전송을 관리하고 네트워크 연결을 유지하는 역할을 수행한다. 그리고 HTTP는 웹 서버와 클라이언트 간의 데이터 통신을 관리하며 웹 페이지 요청 및 응답에 사용된다. HTTP는 웹 페이지의 표현과 데이터를 위해 TCP/IP를 이용해 효과적인 데이터 흐름을 구성한다.
요약하면, HTTP와 TCP/IP는 인터넷과 웹 서비스의 동작을 가능하게 하는 팀처럼 역할하며, 사용자가 웹 페이지를 요청하고 서버가 해당 페이지를 응답함으로써 웹이 동작하게 된다. 이러한 데이터 흐름은 TCP/IP의 안정성과 신뢰성을 활용하여 이루어진다.