WHY?
월드 와이드 웹을 지탱하는 가장 중요한 기술 두 가지는 HTML과 HTTP이다. 이 두 기술은 팀 버너스 리가 웹을 발명할 때 함께 만들어졌다. 이 둘 중 하나라도 빠지면 웹은 성립하지 않는다. HTTP는 웹의 구성요소들이 서로 대화를 할 때 사용하는 프로토콜이다. HTTP를 이해한다는 것은 웹이 어떻게 동작하는지를 이해한다는 것이며, 이는 정확한 근거에 기반한 올바른 기술적 판단을 내려야 할 때 큰 도움이 된다.
웹 콘텐츠는 웹 서버에 존재한다. 클라이언트는 서버에게 HTTP 요청을 보내고, 서버는 요청된 데이터를 HTTP 응답으로 돌려준다.
웹 브라우저는 서버에게 HTTP 객체를 요청하고 사용자의 화면에 보여준다.
웹 서버는 웹 리소스를 관리하고 제공한다. 이는 웹에 콘텐츠를 제공하는 모든 것이라 생각하면 된다.
애플리케이션은 보통 하나의 작업을 수행하기 위해 여러 HTTP 트랜잭션을 수행한다. 웹 브라우저는 시각적으로 풍부한 웹페이지를 가져올 때 대량의 HTTP 트랜잭션을 수행한다. 페이지 레이아웃을 서술하는 HTML 프레임을 한 번의 트랜잭션으로 가져온 뒤, 이미지, 그래픽 조각 등을 가져오기 위해 추가로 HTTP 트랜잭션들을 수행한다. 이 리소스들이 존재하는 서버는 각각 다른 곳에 위치할 수도있다. 즉, 웹페이지는 보통 하나의 리소스가 아닌 리소스의 모음이다.
IP 프로토콜의 한계
TCP (Transmission Control Protocol 전송 제어 프로토콜)
HTTP는 애플리케이션 계층 프로토콜이다. HTTP는 네트워크 통신의 핵심적인 세부사항에 대해 신경쓰지 않는다. 대신 신뢰성 있는 인터넷 전송 프로토콜인 TCP/IP에게 맡긴다.
TCP/IP는 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜의 집합이다. 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다.
HTTP 프로토콜은 TCP 위의 계층이다. HTTP는 자신의 메시지 데이터를 전송하기 위해 TCP를 사용한다. TCP는 또한 IP 위의 계층이다.
프로토콜 계층
1. 애플리케이션 계층에서 프로그램이 Hello, world! 메시지 생성
2. SOCKET 라이브러리를 통해 전송 계층 TCP로 전달
3. TCP 정보를 생성, 메시지 데이터를 포함시켜서 인터넷 계층 IP로 전달
4. IP 패킷 생성, TCP 데이터 포함
5. 이더넷 프레임을 생성, 네트워크 전송
SYN
: 접속 요청
ACK
: 요청 수락
참고 ✅ 마지막 ACK 때 함께 데이터 전송 가능
UDP (User Datagrram Protocol)
체크섬은 중복 검사의 한 형태로, 송신된 자료의 무결성을 보호하는 단순한 방법이다.
HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, IP 주소와 포트 번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야한다.
TCP에서는 서버 컴퓨터에 대한 IP 주소와 그 서버에서 실행 중인 프로그램이 사용 중인 포트번호가 필요하다.
PORT는 같은 IP 내에서 네트워크 서비스나 특정 프로세스를 구분할 수 있는 역할을 한다.
김영한 강사님은 IP가 아파트라면 PORT는 '몇 동, 몇 호'라는 비유를 하셨다. 어떤 아파트 몇 동 몇 호인지 두 가지를 알아야 정확하게 전송할 수 있을 것이다.
IP는 기억하기가 어렵고, 변경될 수 있다. 기본적으로 UDP를 사용한다.
앞 부분에 HTTP 완벽가이드의 옮긴이의 말에 있는 부분을 인용했다. '정확한 근거에 기반한 올바른 기술적 판단을 할 수 있다'는 건 문제 해결 속도를 높이고 서비스를 제공할 때 어느 부분이 부족한 지 보충할 수 있는 통찰력를 갖게 한다. HTTP는 웹의 기반이라고 할 수 있는 부분이라 생각되었다.
브라우저 렌더링과의 관련성? 웹 브라우저가 처음 작동을 할 때 서버를 통해 모든 리소스를 얻는다. 서버를 통해 전송받지 못하면 클라이언트는 아무런 정보를 얻을 수 없는 것이다. 서버와 클라이언트를 이어주는 역할에 프론트엔드가 있다. 이어주기 위해선 서로에 대한 이해는 필수이기에 당연히 배우면 좋고 모든 부분은 아니겠지만 중요 개념은 꼭 배워야 한다는 것을 깨달았다.
TCP와 UDP의 경우엔 사용자에게 제공하려는 서비스에 따라 선택지가 달라질 것으로 보인다. 요즘엔 UDP의 사용이 높아졌다는데 스트리밍되는 서비스가 많아져서인 것 같다. 넷플릭스, 유튜브, 트위터 등. 최근에 또 많이 사용되는 ChatGPT마저...
DNS의 경우 특히 사용자 편의성을 위해 만들어진 시스템으로 보였다. 기업에서는 URL 네이밍도 직관적으로 사용자가 기억하기 쉽도록 고려한다. 따지고 보면 네트워크 자체가 사용자들을 연결해주는 분야이기에 당연히 모든 곳에서 고려했겠지만 말이다...
인터넷 네트워크에 대해 배워보았는데 강의 분량도 얼마 없고 책에도 큰 분량을 차지하지 않았다. 하지만 짚고 넘어가야할 중요한 부분들 같아 궁금한 점은 더 찾아보았다.