웹 통신의 큰 흐름
TCP/IP 프로토콜 스택
OSI 모델과의 비교
각 계층 간단 설명 + 프로토콜
- 애플리케이션
- 네트워크 애플리케이션을 위한 프로토콜 지원
- 대표 프로토콜 : http, ssh, ftp, dns
- 메시지를 생성, 트랜스포트 계층에 메시지 전송 부탁
- 트랜스포트
- process to process 데이터 전송
- 대표 프로토콜 : tcp, udp
- 인터넷 계층에 host 전송 부탁
- 인터넷
- host to host 데이터 전송
- 출발 → 목적지까지 Routing
- 네트워크 엑세스 계층에 한 hop 전송을 부탁
- 대표 프로토콜 :
- IP
- Routing protocol
- ARP : ip 주소를 mac 주소로 대응(bind)시키기 위해 사용되는 프로토콜
- ICMP : 해당 호스트가 없거나, 해당 포트에 떠있는 서버 프로그램이 없는 등의 에러 상황이 발생할 경우 → IP헤더에 기록되어 있는 출발지 호스트로 이러한 에러에 대한 상황을 보내주는 역할을 수행
- 네트워크 엑세스
- 인접한 네트워크 element 간의 데이터 전송
웹 통신의 큰 흐름
- 한 학생이 학교 캠퍼스 네트워크를 통해 www.google.com에 request를 보내고 response를 받는 과정
1. 인터넷에 접속하기
- ip를 할당 받아야 함
- first hop router의 ip 주소를 알아야 함
- 구글의 도메인 이름은 알지만 ip 주소는 모름 → dns 서버에 물어봐야 함 → 그 전에 dns 서버의 주소를 알아야 함
→ DHCP 프로토콜
을 통해 알아냄
2. ARP
- 주소창에 url 치는 순간, HTTP client 프로세스는 DNS client 프로세스를 구동시킴
- DNS client는 www.google.com의 IP 주소를 물어보는 쿼리 메시지 작성
- DNS 서버에 가기 위해서는 우선 first hop router를 거쳐야 함.
- 하지만 현재 gateway router의 IP만 알고, 물리적 네트워크 주소(MAC 주소)는 모름
- ARP 쿼리를 broadcast하여 first hop router의 mac 주소를 알아냄
- 이후 dns 쿼리를 담고있는 메시지는 first hop router로 보내진다.
3. DNS 사용
- IP datagram은 캠퍼스 네트워크에서 인터넷으로 broadcast 됨
- 이때 라우팅 프로토콜들에 의해 생성된 라우팅 테이블을 통해 라우팅된다.
- 그렇게 DNS 서버에 도달하면 DNS 서버는 도메인 명에 대한 IP 주소를 담아서 노트북에 reply
- 이제 노트북은 구글의 IP 주소를 알게 되고, 웹 서버로 HTTP request를 보낼 준비가 됨.
4. TCP connection
- application layer : http
- transport layer : TCP : syn, synack, ack(+http msg) ⇒ 3 way handshake
- Internet layer : (목적지) 웹 서버의 IP 주소
- network access layer : (목적지) gateway router의 mac 주소
5. 응답
- 구글 웹 서버에서 이 frame을 받으면 IP 계층까지 올려보냄 → 자신에게 온 것이 맞으면 HTTP reply 작성해서 client로 전송