HTTP 완벽 가이드 1-4. 커넥션 관리
📘 HTTP 완벽 가이드 읽고 정리하기 🐿︎
TCP 커넥션
-
전 세계 모든 HTTP 통신은 지구상의 컴퓨터와 네트워크 장비에서 널리 쓰이고 있는 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP/IP를 통해 이루어짐
-
세계 어디서든 클라이언트 애플리케이션은 서버 애플리케이션으로 TCP/IP 커넥션을 맺을 수 있음
-
커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 주고받는 메시지들은 손실, 손상되거나 순서가 바뀌지 않고 안전하게 전달됨
-
컴퓨터는 항상 여러개의 TCP 커넥션을 가지고 있으며, TCP는 포트 번호를 통해 이런 여러 개의 커넥션을 유지함
-
TCP 커넥션은
'발신지 IP 주소, 발신지 포트, 수신지 IP 주소, 수신지 포트'
네 가지 값으로 식별 -
-
HTTP는 TCP 바로 위에 있는 계층이기 때문에 HTTP 트랜잭션의 성능은 그 아래 계층인 TCP 성능에 영향을 받음
-
TCP 네트워크 지연은 하드웨어 성능, 네트워크와 서버의 전송 속도, 요청과 응답 메시지의 크기, 클라이언트와 서버 간의 거리에 따라 크게 달라짐
-
IP 패킷
-
TCP는 IP 패킷(=IP 다이어그램)이라고 불리는 작은 조각을 통해 데이터를 전송
- 패킷이란? 데이터의 묶음 단위로 한번에 전송할 데이터의 크기
-
HTTP가 메시지를 전송하고자 할 경우, 현재 연결되어 있는 TCP 커넥션을 통해 메시지 데이터의 내용을 순서대로 보내는데, TCP 세그먼트라는 단위로 데이터 스트림을 잘게 나누고, 세그먼트를 IP 패킷이라고 불리는 봉투에 담아 인터넷을 통해 데이터를 전달 > 이 모든 것은 TCP/IP 소프트웨어에 의해 처리됨
-
IP패킷이 포함하는 것
-
IP 패킷 헤더 : 발신지와 목적지 IP 주소, 크기, 기타 플래그를 가짐
-
TCP 세그먼트 헤더 : TCP 포트 번호, TCP 제어 플래그, 데이터 순서와 무결성을 검사하기 위해 사용되는 숫자 값을 포함
-
TCP 데이터 조각
-
TCP 소켓 프로그래밍
-
소켓 : 네트워크에서 이름 및 주소를 지정할 수 있는 통신 연결점(종료점)
-
운영체제는 TCP 커넥션의 생성과 관련된 여러 기능을 제공
-
소켓 API는 HTTP 프로그래머에게 TCP와 IP의 세부사항을 숨김
-
소켓 API를 사용하면 TCP 종단 데이터를 생성하고, 원격 서버의 TCP 종단에 그 종단 데이터 구조를 연결하여 데이터 스트림을 읽고 쓸 수 있음