TCP 커넥션 관리
- Coding/HTTP
- 2019. 6. 22.
TCP Connection
모든 HTTP 통신은 TCP/IP를 통해 이루어진다. TCP/IP 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합이다. 클라이언트 애플리케이션은 서버 애플리케이션으로 어디서든 TCP/IP 커넥션을 맺을 수 있다. 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 주고받은 메시지들은 어떠한 정보도 바뀌지 않고 안전하게 전달된다.
URL을 입력하는 브라우저는 어떤 단계를 수행할까?
(1) 브라우저가 www.test.com 이라는 호스트명을 추출한다.
(2) 브라우저가 이 호스트 명에 대한 IP 주소를 찾는다. (ex) 202.42.71.8)
(3) 브라우저가 포트번호 80을 얻는다.
(4) 브라우저가 202.42.71.8의 80 포트로 TCP 커넥션을 생성한다.
(5) 브라우저가 서버로 HTTP GET 요청 메시지를 보낸다.
(6) 브라우저가 서버에서 온 HTTP 응답 메시지를 읽는다.
(7) 브라우저가 커넥션을 끊는다.
여기서 알 수 있는 사실은, 커넥션은 한번만의 요청-응답을 처리한 후 끊어진다는 것이다.
신뢰성 TCP
TCP는 HTTP에게 신뢰할만한 통신방식을 제공한다. TCP는 충돌 없이 순서에 맞게 HTTP 데이터를 전달한다.
TCP 스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송된다.
TCP는 IP 패킷(IP 다이어그램)이라고 불리는 작은 조각을 통해 데이터를 전송한다. TCP는 세그먼트라는 단위로 데이터 스트림을 잘게 나누고, 세그먼트를 IP 패킷이라고 불리는 곳에 담아서 인터넷을 통해 데이터를 전달한다. 이 모든것은 TCP/IP 소프트웨어에 의해 처리된다. 각 TCP 세그먼트는 하나의 IP 주소에서 다른 IP 주소로 IP 패킷에 담겨 전달된다.
IP 패킷들은 아래 3가지를 포함한다.
1) IP 패킷 헤더 : 발신지와 목적지 IP 주소, 크기, 기타 플래그를 가진다.
2) TCP 세그먼트 헤더 : TCP 포트 번호, TCP 제어 플래그, 데이터의 순서와 무결성을 검사하기 위해 사용되는 숫자값을 포함한다.
3) TCP 데이터 조각
TCP 커넥션 유지
컴퓨터는 항상 TCP 커넥션을 여러개 가지고있다. TCP는 포트 번호를 통해서 이러한 여러개의 커넥션을 유지한다. TCP 커넥션은 <발신지 IP 주소, 발신지 포트, 수신지 IP 주소, 수신지 포트> 의 4가지 값으로 식별한다. 이 4가지 값으로 유일한 커넥션을 생성한다.
같은 발신지 IP 주소를 가리키는 커넥션들
같은 목적지 IP 주소를 가리키는 커넥션들
같은 목적지 포트 번호를 가리키는 커넥션들
위 3가지의 커넥션들은 존재할 수 있겠지만, 4가지 커넥션 구성요소를 모두 똑같이 가리키고 있는 커넥션은 있을 수 없다.
마무리
HTTP는 TCP 바로 위에 있는 계층이기 때문에 HTTP 트랜잭션의 성능은 그 아래에 있는 TCP 성능에 영향을 받는다. 세계의 모든 HTTP 통신은 TCP/IP로 이루어져있다는 사실을 인지하면 된다.
'Coding > HTTP' 카테고리의 다른 글
HTTP2.0의 출현 (0) | 2019.06.22 |
---|---|
웹 캐시에 대해 알아보기 (0) | 2019.06.22 |
HTTP 기초개념 알아보기 (0) | 2019.06.22 |
HTTP 메시지 (0) | 2019.06.22 |
URL과 리소스 (0) | 2019.06.22 |