네트워크의 기본은 TCP/IP
- 네트워크는 TCP/IP 라는 프로토콜에서 움직이고 있다.
- HTTP 는 그 중 하나.
프로토콜 ?
컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하지 않으면 안 된다.
어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하고, 어떠한 언어로 이야기를 하며, 어떻게 이야기를 종료할까와 같은 규칙을 결정할 필요가 있다. 이러한 규칙을 프로토콜이라 한다.
계층을 관리하는 TCP/IP
계층화의 장점
- 각 계층의 내부는 자유롭게 설계할 수 있다.
- 사양이 변경된 해당 계층만 변경하면 된다.
- 약간 객체지향 느낌이 난다
- 애플리케이션 계층
- 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정한다
- FTP, DNS, HTTP 등 도 애플리케이션의 한 가지이다.
- 트랜스포트 계층
- 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공
- TCP, UDP 두 가지 프로토콜이 있다.
- 네트워크 계층 (인터넷 계층)
- 네트워크 상에서 패킷의 이동을 다룬다.
- 링크 계층 (데이터 링크 계층, 네트워크 인터페이스 계층)
- 네트워크에 접속하는 하드웨어적인 면을 다룬다.
TCP/IP 통신의 흐름
송신측 - 계층을 통과할 때마다 헤더를 추가
- 클라이언트의
- 어플리케이션 계층 (HTTP 클라이언트) →
- HTTP 데이터 (HTTP 메시지)
- 트랜스포트 계층 (TCP) →
- TCP 헤더 (TCP 세그먼트)
- 네트워크 계층 (IP) →
- IP 헤더 (IP 데이터그램)
- 링크 계층 (네트워크) →
- Ethernet 헤더 (네트워크 프레임)
수신측 - 계층을 통과할 때마다 헤더를 삭제
- 서버의
- 링크 계층 (네트워크) →
- Ethernet 헤더
- 네트워크 계층 (IP) →
- IP 헤더
- 트랜스포트 계층 (TCP) →
- TCP 헤더
- 어플리케이션 계층 (HTTP 서버)
- HTTP 데이터
HTTP 와 관계가 깊은 프로토콜은 IP/TCP/DNS
IP
- 네트워크 계층에 해당한다.
- 배송을 담당한다.
- 통신은 ARP를 이용하여 MAC 주소에서 한다.
- 각각의 패킷을 상대방에게 전달하는 것
- 라우터 등의 네트워크 기기는 대략적인 목적지만 알고 있다.
신뢰성을 담당하는 TCP
- 트랜스포트 계층에 해당한다.
- 신뢰성 있는 바이트 스트림 서비스를 제공한다.
- 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인한다
- 쓰리웨이 핸드셰이킹 (three way handshaking)
- 패킷을 보내고 보내졌는지 여부를 상대에게 확인하는 것
이름 해결을 담당하는 DNS
URI와 URL
URI
- 리소스 식별자 (자원)
- 리소스
- 식별 가능한 모든 것
- Identifier
- 식별 가능한 것을 참조하는 오브젝트, 식별자
URL
- 리소스의 장소(네트워크 상의 위치)를 나타낸다
- URI의 서브셋이다.