제1장. 웹과 네트워크의 기본에 대해 알아보자
책 제목에도 나와있다시피, 개념을 일괄 설명 후 그림으로 다시금 정리를 해주니 이해가 정말 쉽게된다.
백엔드 코치님께서 추천해주신 이 책을 읽으며 내용을 정리해나가고자 한다.
웹은 HTTP로 나타낸다.
- 프로토콜 === 약속
- 즉, 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다.
네트워크의 기본은 TCP/IP
- 인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라는 프로토콜에서 움직이고 있다.
- HTTP는 TCP/IP 중 하나이다.
⭐️ TCP/IP는 프로토콜의 집합
- 컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신해야 한다.
- (ex) 어떻게 상대를 찾고, 어떠한 언어로 이야기 하고 등
- 즉, 서로 다른 하드웨어와 운영체제 등을 가지고 서로 통신을 하기 위해서는 모든 요소에 "규칙"이 필요하게 된다 === 프로토콜
- 인터넷과 관련된 프로토콜들을 모은 것 === TCP/IP
⭐️ TCP/IP는 계층으로 구성, 관리된다.
- 애플리케이션 계층
- 트랜스포트 계층
- 네트워크(인터넷) 계층
- 링크 계층
- 계층화 되어있지 않은 경우, 즉 하나의 프로토콜로만 이루어져 있는 경우, 사양이 변경되었을때 전체를 바꿔야함. BUT 계층화 되어있기에 사양이 변경된 해당 계층만 바꾸면 됨.
- 설계를 편하게 할 수 있음: 각 계층별로 자신이 담당하는 파트만 고려하면 됨.
애플리케이션 계층
- 유저의 애플리케이션에서 사용하는 통신의 움직임을 결정
- HTTP도 이 계층에 포함된다.
트랜스포트 계층
- 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공
네트워크(인터넷) 계층
- 네트워크 상에서 패킷(전송하는 데이터의 최소단위)의 이동을 다룸
- 어떤 경로(절차)를 거쳐 상대의 컴퓨터까지 패킷을 보낼지 결정
링크 계층
HTTP 예시로 각 계층을 설명
- 애플리케이션 계층: 어느 웹 페이지를 보고 싶다고 HTTP 리퀘스트를 지시
- 트랜스포트 계층: 애플케이션 계층에서 받은 데이터(HTTP 메세지)를 통신하기 쉽게 조각내어 안내번호와 포트번호를 붙여서 네트워크 계층에 전달
- 네트워크 계층: 수신지 MAC 주소를 추가해서 링크 계층에 전달
- 수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달 (링크 👉 네트워크 👉 트랜스포트 👉 애플리케이션)
- 애플리케이션 계층에 도달하게 되면 드디어 클라이언트 HTTP 리퀘스트 내용 수신
⭐️ p.24 그림 참고
HTTP와 관계가 깊은 프로토콜 IP, TCP, DNS
1. 배송을 담당하는 IP
- IP 주소와 혼동하지 않기. IP는 프로토콜의 명칭이다
- IP(Internet Protocol): 개개의 패킷을 상대방에게 전달
- 상대방에게 패킷을 전달하기까지 여러가지 요소가 필요한데,
그 중 IP 주소와 MAC 주소라는 요소가 중요하다.
- IP 주소: 각 노드에 부여된 주소 (가변)
- MAC 주소: 각 네트워크 카드에 할당된 고유의 주소 (불변)
통신은 ARP를 이용하여 MAC 주소에서 한다.
- APR(Address Resolution Protocol): 주소를 해결하기 위한 프로토콜로, 수신지의 IP 주소를 바탕으로 MAC 주소를 조사할 수 있다.
- 여러대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착한다.
계속 토스해가면서 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아간다.
이때 ARP라는 프로토콜을 사용한다.
⭐️ p.26 그림 참고
그 누구도 인터넷 전체를 파악하고 있지는 않다.
- 목적지까지 중계하는 도중에 컴퓨터와 라우터 등의 네트워크 기기는 목적지에 도착하기까지의 '대략적인' 목적지만을 알고 있다.
- ⭐️ 이러한 시스템을 라우팅이라 하는데, 택배 배송에 비유하여 생각하면 편하다.
2. 신뢰성을 담당하는 TCP
- 신뢰성있는 바이트 스트림 서비스를 제공
- 바이트 스트림 서비스: 용량이 큰 데이터를 보내기쉽게 TCP 세그먼트라고 불리는 단위 패킷으로 작게 분해하여 관리하는 것
- 신뢰성 있는 서비스: 상대방에게 보내는 서비스
- 즉, TCP는 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인하는 역할을 담당
쓰리웨이 핸드셰이킹(three way handshaking)
- 패킷을 보내고나서 바로 끝내는 것이 아니라, 보내졌는지 여부를 상대에게 확인
- SYN과 ACK라는 TCP 플래그를 사용한다
⭐️ p.28 그림 참고
3. 이름 해결을 담당하는 DNS
- 인간에게 친숙한 도메인명에서 IP 주소를 조사하거나, 반대로 IP 주소로부터 도메인명을 조사하는 서비스를 제공
- (ex) www.google.com 🔁 20x.198.105.1xx
⭐️ p.30 그림 참고
URI와 URL
URI는 리소스 식별자
- 스키마를 나타내는 리소스를 식별하기 위한 식별자
- 스키마: 리소스를 얻기 위한 수단에 이름을 붙이는 방법
- 리소스: 식별 가능한 모든 것(도큐먼트 파일, 이미지, 서비스 등)
- URI는 리소스를 식별하기 위해 문자열 전반을 나타냄
- URL는 리소스의 장소(네트워크 상의 위치)를 나타냄
- URL은 URI의 서브셋(부분집합)