Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vfr video
- PersistenceContext
- Value too long for column
- 자원부족
- mp4fpsmod
- addhooks
- JanusWebRTC
- JanusWebRTCServer
- VARCHAR (1)
- taint
- 달인막창
- table not found
- python
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 깡돼후
- 개성국밥
- preemption #
- terminal
- kotlin
- 오블완
- JanusWebRTCGateway
- 겨울 부산
- tolerated
- 코루틴 컨텍스트
- JanusGateway
- 티스토리챌린지
- PytestPluginManager
- pytest
- 코루틴 빌더
- Spring Batch
Archives
너와 나의 스토리
[CH.5] Link Layer - MPLS / a day in the life of a web request 본문
Computer Networks/이론
[CH.5] Link Layer - MPLS / a day in the life of a web request
노는게제일좋아! 2019. 12. 8. 01:12반응형
VLANs
- Virtual Local Area Network: VLAN 기능을 지원하는 스위치를 구성하여 하나의 physical LAN 인프라에서 여러 가상 LANs을 정의할 수 있다.
- port-based VLAN: 스위치 포트 그룹화
- 하나의 physical 스위치를 여러 개의 가상 스위치로 작동
- 파란색 부분을 VLAN 1, 노란색 부분을 VLAN 2로 설정
- 16번, 1번을 trunk port로 VLAN 1,2번이 설정 가능(?)
- trunk port: multiple physical switches에서 정의된 VLAN 사이에서 frame 전달
Link virtualization: MPLS
Multiprotocol label switching (MPLS)
-
우리가 기존에 쓰는 라우팅 알고리즘은 longest prefix matching이었음 -> 그리디 하게 포워딩
-
MPLS는 중간에 들어가는거 나가는 거를 지원할 수 있음 -> 프로토콜을 훨씬 더 꼼꼼하게 보낼 수 있음
- 이렇게 in, out label에 따라 다르게 포워딩 가능 -> traffic 줄어듦
A day in the life of a web request
인터넷에 연결해서 브라우저를 켜고 www.google.com 주소를 입력했을 때, 웹 브라우저가 뜨는 시간 동안 네트워크 내에서는 어떤 일들이 일어날까?
- 와이파이에 연결되자 마자(or 랜선을 꽂자마자) DHCP에 request를 보냄
- 나는 지금 내 IP 주소, 첫 번째 hop 라우터 주소, 해당 브라우저의 DNS가 없으니까
- DHCP 요청은 UDP에서 인캡슐화 됨.
- Ethernet frame(dest가 FF-FF-FF-FF-FF)를 LAN에 broadcast 하고, DHCP 서버를 실행하는 라우터에서 수신됨
- 정보 받을 때는 unicast
- Ethernet은 IP로 demuxed 되고, UDP는 DHCP로 demuxed
- DHCP 서버는 클라이언트의 IP 주소, 첫 번째 hop 라우터의 IP 주소, DNS 서버의 IP 주소를 포함하는 DHCP ACK를 공식화함
- DHCP는 클라이언트로부터 ACK을 응답 받음
- 이제 클라이언트는 IP주소, 자신의 DNS 서버 이름 및 주소, first hop router IP 주소를 알게 됨.
- 아직 www.google.com의 IP를 모름. 그래서 DNS 서버에 물어봐야 하는데, DNS 서버가 현재 네트워크 밖에 있다면?
- 얘가 밖으로 나가고 싶은데, 라우터의 MAC addr을 모르니까 ARP(MAC dest:FF-FF-FF-FF-FF)를 보냄
- 이때, MAC learning 일어남
- 이제 first-hop 라우터의 MAC addr을 알게 됨
- 이제 DNS에 쿼리 보내기
- 아까 DNS의 IP는 알아냈으므로, <IP dest: DNS IP, MAC dest: first-hop 라우터의 MAC addr>을 넣어서 보냄
- 라우터는 IP가 자기 자신이 아닌 것을 보고, MAC 떼고 라우팅 시작 -> longest prefix matching으로
- 아까 DNS의 IP는 알아냈으므로, <IP dest: DNS IP, MAC dest: first-hop 라우터의 MAC addr>을 넣어서 보냄
- DNS 서버가 default router, root router, top-level router를 거쳐서 google.com의 IP를 알아내 보내줌
- 이제 나는 모든 주소를 알게됨. 이제 TCP를 선택해서 HTTP request를 보내려고 함
- TCP handshaking을 먼저 함. (syn 보내고~)
- TCP 연결되면 HTTP 요청을 TCP 소켓에 보냄
- HTTP 요청을 포함하는 IP 데이터그램이 www.google.com에 라우팅 됨
- 웹 서버는 HTTP reply
- HTTP reply를 포함하는 IP 데이터그램이 클라이언트로 다시 라우팅 됨
출처: [Computer Networking: A Top-Down Approach]
반응형
'Computer Networks > 이론' 카테고리의 다른 글
[Computer Network] 프로토콜 스택 / Socket 통신 (0) | 2021.06.28 |
---|---|
[CH.5] Link Layer - LANs(addressing, ARP, Ethernet, switches, VLANs) (0) | 2019.12.04 |
[CH.5] Link Layer - services, error detection/correction, multiple access protocols (0) | 2019.12.03 |
[CH.4] Routing algorithms / Routing in the Internet (0) | 2019.11.26 |
[CH.4] Network Layer - ICMP, IPv6 (0) | 2019.11.26 |
Comments