Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워킹

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

작성자:쉐어 돈

개방형 시스템 상호 연결 모델 알아보기

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

개요

이 시리즈 전체에서 다음과 같은 기본 사항을 다룰 것입니다.
(1부) DNS는 어떻게 작동하나요?
(2부) 네트워크 스택, OSI 모델 [현재 위치!]
(3부) HTTP 메서드 및 형식
(4부) 고객 식별
(5부) 기본/다이제스트 인증
(6부) SSL/TLS와 연동되는 HTTPS

OSI 모델

OSI(Open Systems Interconnection) 모델은 컴퓨터 시스템의 통신을 위한 표준화된 모델입니다. 이는 기본 기술을 고려하지 않고 대신 통신과 관련된 계층을 고려합니다. OSI 모델 내의 다양한 계층을 살펴보겠습니다.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드 일반적인 5계층 OSI 모델

1. 애플리케이션 계층

이 계층을 사용하면 웹 브라우저(응용 프로그램)에서 서버로 연결되는 것과 같이 연결이 설정된 후 응용 프로그램이 네트워크를 통해 통신할 수 있습니다. 이 계층의 프로토콜 예로는 HTTP 및 TELNET이 있습니다.

하이퍼텍스트 전송 프로토콜(HTTP)

인터넷을 통해 파일을 전송하기 위한 일련의 규칙입니다. 예를 들어, 브라우저에 URL을 입력하면 브라우저는 웹페이지에 대한 HTTP 요청을 보냅니다. 그런 다음 호스트는 이미지, 텍스트, 비디오, 스타일 글꼴 등과 같은 내부의 모든 요소와 함께 웹페이지를 반환합니다.

2. 전송 계층

이 계층은 호스트 간 메시지 통신을 담당합니다. 이 계층의 프로토콜 예로는 TCP 및 UDP가 있습니다.

전송 제어 프로토콜(TCP)

가장 일반적인 연결 지향 프로토콜입니다. 이는 네트워크 대화를 설정하고 유지하는 방법을 정의합니다. 연결(소켓이라고 함) 설정을 담당합니다. ) 3방향 핸드셰이크를 통해 클라이언트와 호스트 간.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

데이터를 요청하는 사용자는 SYN 데이터 패킷을 서버에 보내 동기화를 요청합니다. . 그러면 서버는 사용자에게 SYN-ACK로 응답하여 확인했음을 나타냅니다. 데이터 패킷도 연결하고 싶습니다. 따라서 사용자가 마지막 ACK를 서버에 보낼 때 연결이 설정됩니다.

TCP는 다음과 같은 기능을 제공할 수 있는 우아함으로 인해 가장 일반적입니다.

연결 지향 커뮤니케이션
데이터가 교환되기 전에 연결을 보장하기 위해 엔드포인트 간에 핸드셰이크 프로토콜을 설정하고 데이터 스트림(데이터 패킷)으로 전송합니다.

신뢰성
체크섬을 사용하여 전송 및 수신된 데이터 패킷이 동일한지 확인합니다. 누락/손상된 패킷이 있는 경우 보낸 사람에게 NACK 메시지를 보내 데이터 패킷의 재전송을 요청합니다.

주문
데이터 패킷에는 번호가 매겨져 전송됩니다. 따라서 TCP는 애플리케이션을 전달하기 전에 수신된 패킷의 순서가 다시 정렬되도록 합니다.

흐름 제어
데이터 전송 속도는 효율성을 향상시키는 동시에 버퍼 오버런/언더런을 방지하기 위해 규제됩니다. 버퍼 오버런/언더런은 데이터가 수신자가 처리할 수 있는 것보다 더 빠르게 전송되고 그 반대의 경우도 마찬가지입니다.
그 뒤에 있는 메커니즘은 아래 TCP 느린 시작 섹션에 설명되어 있습니다.

멀티플렉싱
기본적으로 동일한 소켓을 통해 동시에 여러 정보 스트림을 보낼 수 있습니다. 이는 소켓의 다른 포트를 통해 수행됩니다. 멀티플렉싱과 파이프라이닝의 차이점에 대해서는 기사에서 더 자세히 논의할 것입니다.

사용자 데이터그램 프로토콜(UDP)

TCP와 유사하지만 연결이 없는 프로토콜입니다. 이는 TCP와 정반대이므로 신뢰할 수 없고 순서가 없습니다. 삭제된 패킷은 재전송되지 않아 데이터에 공백이 발생합니다.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

그러나 이는 인터넷을 통한 음성 통화(VoIP)와 같이 시간에 민감한 애플리케이션에 가장 적합합니다. 전송 전 3방향 핸드셰이크가 필요하지 않아 속도가 빠르기 때문이다. 또한 손실된 데이터 패킷은 VoIP에서 문제가 되지 않습니다. 인간의 귀는 손실된 패킷에서 흔히 발생하는 짧은 간격을 처리하는 데 매우 능숙하기 때문입니다.

3. 네트워크 계층

이 계층은 네트워크 연결을 위한 데이터 라우팅 경로를 제공하는 역할을 담당합니다. 기본적으로 가장 논리적인 경로를 사용하여 네트워크를 통해 데이터 패킷을 이동합니다.

인터넷 프로토콜(IP)

데이터 패킷의 구조를 정의하고 소스 및 대상 정보로 레이블을 지정합니다.

소스 및 대상 정보는 IP 주소 형식이며 104.16.121.127 형식일 수 있습니다. (IPv4) 또는 2001:db8:0:1234:0:567:8:1 (IPv6).

4. 링크/물리계층

이 계층은 OSI 모델의 루트로, 링크 계층의 경우 LAN(Local Area Network)에서 정보가 전송되고, 물리 계층의 경우 코드 워드 또는 기호 형태의 전기, 기계 매체와 같은 물리적 신호가 전송됩니다.

경로 시각화

tracert google.com 사용 , 클라이언트측(컴퓨터)에서 호스트(google.com)까지 경로를 추적할 수 있습니다.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

위에서는 내 기기 192.168.1.254에서 시작하는 경로를 볼 수 있습니다. 라우터 10.243.128.1로 , 포르투갈에 위치한 인터넷 서비스 제공업체(ISP)를 통과하기 전 등.

보완 레이어

TCP/IP 모델

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드 TCP는 삭제된 데이터 패킷의 재전송을 요청하고 순서를 변경합니다

IP는 데이터 패킷의 구조만을 담당합니다. 따라서 데이터 패킷이 손상되거나 삭제된 경우 수정되지 않습니다. 여기서 TCP가 작동하여 클라이언트로 보내기 전에 데이터 패킷에 번호를 매깁니다. 클라이언트 측에서 TCP는 손실/손상된 패킷의 재전송을 요청한 다음 데이터 패킷을 재정렬합니다.

HTTP/TCP 모델

앞서 언급했듯이 이제 HTTP는 TCP 핸드셰이크를 통해 이루어진 연결을 통해 요청할 수 있습니다. 하지만 어떻게 서로 보완할 수 있을까요?

HTTP 영구 연결
이렇게 하면 모든 요청/응답마다 새 연결을 여는 것과 달리 단일 TCP 연결에서 여러 HTTP 요청/응답이 허용됩니다.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드 지속적 연결에 대한 샘플 응답

이는 HTTP 헤더를 통해 수행됩니다. 여기서 Connection: Keep-Alive . 기본적으로 연결은 Connection: Close인 다른 응답이 있을 때만 닫힙니다. 30초 동안 유휴 상태가 되면 전송됩니다.

TCP 느린 시작
앞에서 언급했듯이 TCP는 흐름 제어를 지원합니다. 이는 네트워크 정체를 방지하기 위한 일종의 TCP Slow Start를 통해 이루어집니다.

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

송신자에게는 혼잡 윈도우(CWND)가 있고 수신자에게는 수신자 윈도우(RWND)가 있습니다. 데이터가 정체/수신 창보다 큰 경우 각각 버퍼 언더/오버런이 발생합니다.

이를 방지하기 위해 발신자는 작은 혼잡 창(CWND =1)을 사용하여 데이터 패킷을 보내는 것으로 시작하여 수신자 창에 대해 수신자를 천천히 검색합니다.

수신자는 승인으로 응답하고, 승인이 수신되지 않을 때까지 송신자에게 매번 데이터 패킷을 두 배로 늘리도록 요청합니다. 이 시점에서 최적의 데이터 패킷 수가 발견되어 다른 혼잡 제어 알고리즘이 이 속도로 연결을 유지할 수 있습니다.

함께 일하기
따라서 TCP Slow Start는 연결이 종료되기 전에 전송할 최적의 데이터 패킷 수를 파악할 수 있습니다. 이렇게 하면 버퍼 오버런 위험 없이 호스트에서 클라이언트로 전송되는 데이터의 양을 최적화할 수 있습니다(데이터는 수신 가능한 것보다 빠르게 전송됩니다).

기타 HTTP 기능

HTTP 파이프라이닝

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드

버전 HTTP/1.1의 이 기능을 사용하면 응답을 기다리지 않고 동일한 소켓에서 여러 요청을 한 번에 보낼 수 있습니다. 그러나 최신 버전의 HTTP/2에서는 TCP 다중화로 대체되었습니다.

주요 차이점은 둘 다 동일한 소켓에서 동시에 여러 요청을 허용하지만 파이프라이닝에서는 여전히 응답을 순서대로 보내야 한다는 것입니다. 이는 요청한 품목이 주문(A, B, C)에 있는 경우 B 품목이 제대로 배송되지 않으면 클라이언트는 C 품목을 받지 못한다는 것을 의미합니다.

멀티플렉싱에서는 순서가 중요하지 않습니다. 그러면 배송 시간이 더 빨라질 것입니다.

이러한 메서드는 요청 횟수와 관계없이 응답하는 메서드인 멱등성 메서드에 가장 적합합니다. 예를 들어 웹페이지를 여러 번 요청하면 동일한 웹페이지에 응답하게 됩니다.

병렬 연결

웹페이지를 열었을 때 웹페이지의 여러 구성요소(비디오 바, 썸네일, 버튼)가 동시에 로드되는 것을 본 적이 있습니까?

HTTP 기초:컴퓨터 시스템의 통신에 대한 종합 가이드 _여러 구성 요소가 동시에 로드됨 | 사진 제공:[Cloudflare Mobile SDK](https://www.cloudflare.com/products/mobile-sdk/" rel="noopener" target="blank" title=")

이는 동시에 두 개 이상의 TCP 연결이 설정되어 이러한 구성 요소를 차례로 로드하는 대신 동시에 로드할 수 있는 병렬 연결을 통해 가능합니다.

그러나 로드 속도가 더 빠른 것처럼 보일 수도 있지만 클라이언트의 제한된 대역폭으로 인해 제한될 수 있습니다. 모든 병렬 연결이 제한된 대역폭을 놓고 경쟁하는 경우 각 구성 요소의 로드 속도가 비례적으로 느려지므로 총 로드 속도에서 이점이 전혀 없습니다.

결론

OSI 모델을 사용하면 네트워크의 큰 그림과 하드웨어에서 소프트웨어까지 네트워크가 서로 어떻게 상호 작용하는지 쉽게 이해할 수 있습니다.

일반적으로 이는 훌륭한 교육 도구이자 문제 해결을 위한 참고 자료입니다. 이 모델은 모든 레이어의 기능을 조사하여 레이어별로 디자인을 고민하게 만들기 때문에 디자인에도 유용합니다.

지금까지 제가 겪은 것은 OSI 5계층 모델인 반면, 식별, 인증, 데이터 암호화를 다루는 OSI 7계층 모델도 있습니다.

이것은 HTTP 소개 시리즈의 2부입니다. Part 1에서 DNS 서버의 중요성에 대한 첫 번째 기사를 읽을 수 있습니다. 다음 Part 3에서 HTTP 요청의 구조를 살펴보겠습니다!

안녕하세요! 저는 현재 데이터 과학을 전공하고 있는 Cher Don이라고 합니다. 저는 Paralegal Bot의 CTO입니다. 아래에서 제 웹사이트를 찾아보실 수 있습니다. 읽어주셔서 감사합니다!

불쾌함;
_Quality Content 이해하기 어려운 개념에 대해 최고의 콘텐츠를 제공합니다. 우리는 거기에 있었고 당신과 같은 느낌을 받았습니다… _www.piqued.co

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요