본문 바로가기

자격증

[IT] Network Layer

728x90

컴퓨터 네트워크의 최종 학습목표는 와이파이 연결 후 내 컴퓨터(end host)에서 어느 웹 페이지에 접속해서 웹 페이지가 딱 뜰 때, 서버가 있는 end host까지로 어떤 일이 있었는지 설명할 수 있는 것.

 

  1. 브라우저 주소창 www.google.com을 입력한다.
  2. 브라우저가 www.google.com의 IP 주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.
  3. 만약 요청한 URL(www.google.com)이 캐시에 없다면, ISP의 DNS 서버 DNS 쿼리로 www.google.com을 호스팅하는 서버의 IP 주소를 찾는다.
  4. 브라우저가 해당 서버와 TCP 연결을 시작한다.
  5. 브라우저가 웹서버에 HTTP 요청을 보낸다.
  6. 서버가 요청을 처리하고 응답을 보낸다.
  7. 서버가 HTTP 응답을 보낸다.
  8. 브라우저가 HTML 컨텐츠를 보여준다.

 

1. 브라우저 주소창 www.google.com을 입력한다.




2. 브라우저가 www.google.com의 IP 주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.

사실 말이 굉장히 어려울지도 모르지만 DNS에 대해 알아보면 금방 이해할 수 있다.

DNS(Domain Name System)
: 웹사이트의 IP 주소와 도메인 주소를 연결해주는 시스템으로 인터넷의 모든 URL에는 고유한 IP 주소가 할당되어 있으며, IP 주소는 액세스 요청 웹 사이트의 서버를 호스트하는 컴퓨터에 속한다.

 

📖 터미널에 nslookup google.com 입력 시, 해당 고유 IP 주소를 반환한다.

Name: google.com  
Address: 142.250.207.110

 

만약 DNS가 없을 경우, 우리가 도메인 주소를 하나하나 외워서 입력해주어야 웹사이트에 접속할 수 있다.. DNS가 IP주소(142.250.207.110)와 도메인(www.google.com)을 연결해주기 때문에 우리는 손쉽게 웹사이트에 진입이 가능한 것이다.


그렇다면 DNS 기록이 무엇인가??

DNS 기록을 찾기 위해서, 브라우저는 총 네차례로 걸쳐 캐시를 확인한다.

  • 1️⃣ 브라우저 캐시 확인 : 브라우저는 이전에 방문한 웹 사이트의 DNS 기록을 일정 기간 동안 저장하고 있다.
  • 2️⃣ OS 캐시 확인 : 브라우저 캐시에 원하는 DNS 레코드가 없다면, 브라우저가 내 컴퓨터 OS에 시스템 호출(ex. 윈도우에서 gethostname 호출)을 통해 DNS 기록을 가져온다. (OS도 DNS 레코드 캐시를 저장하고 있다.)
  • 3️⃣ 라우터 캐시 확인 : 만약 컴퓨터에도 원하는 DNS 레코드가 없다면, 브라우저는 라우터에서 DNS 기록을 저장한 캐시를 확인한다.
  • 4️⃣ ISP 캐시 확인 : 만약 위 모든 단계에서 DNS 기록을 찾지 못한다면, 브라우저는 ISP에서 DNS 기록을 찾는다. ISP(Internet Service Provider)는 DNS 서버를 가지고 있는데, 해당 서버에서 DNS 기록 캐시를 검색할 수 있다.




3. 만약 요청한 URL(www.google.com)이 캐시에 없다면, ISP의 DNS 서버 DNS 쿼리 www.google.com을 호스팅하는 서버의 IP 주소를 찾는다.

오늘날 많은 웹사이트의 URL은 3차 도메인, 2차 도메인 / 최상위 도메인(TLD: Top Level Domain)으로 이루어진다.

출처: 그림으로 보는 도메인 체계




먼저 DNS 리커서가 루트 네임 서버(Root Name Server)에 연결한다. 루트 네임 서버는 리커서를 .com 도메인 네임 서버로 리디렉션한다. .com 네임 서버는 google.com 네임 서버로 리디렉션한다. 리커서는 이를 브라우저로 다시 보낸다.

4. 브라우저가 해당 서버와 TCP 연결을 시작한다.

TCP(Transmission Control Protocol)
전송 제어 프로토콜로 여러 인터넷 프로토콜(IP)이 존재하지만, 일반적으로 HTTP 요청에서는 클라이언트와 서버 간에 데이터 패킷을 전송하려면 TCP 연결을 해야 한다. 이 연결은 TCP/IP 3-way handshake라는 연결 과정을 통해 이뤄진다. 클라이언트와 서버가 SYN(synchronize: 연결 요청) 및 ACK(acknowledgement: 승인) 메시지를 교환하여 연결을 설정하는 3단계 프로세스이다.

3-way handshake

 


위와 같은 요청(Request)은 내용 및 IP 주소(DNS 리커서의 IP 주소)와 같은 정보를 작은 데이터 패킷에 담겨 전송된다.


5. 브라우저가 웹서버에 HTTP 요청을 보낸다.

앞서 TCP 연결이 설정되면 데이터 전송을 시작한다. 브라우저는 google.com 웹 페이지를 요청하는 GET 요청을 보내게 된다.

 



6. 서버가 요청을 처리하고 응답을 보낸다.

서버에는 웹 서버가 포함되어 있는데, 이는 브라우저로부터 요청을 수신하고, 해당 내용을 request handler에 전달하여 응답을 읽고 생성하는 역할을 한다. Request handler는 요청, 요청의 헤더 및 쿠키를 읽고 필요한 경우 서버의 정보를 업데이트하는 프로그램이다. 그런 다음 response를 특정 포맷으로(JSON, XML, HTML)으로 작성한다.

  • 웹 서버 종류

출처 : web server

NGINX, 아파치, IIS(마이크로소프트 인터넷 정보 서비스), google web server 등




7. 서버가 HTTP 응답을 보낸다.

위의 응답을 보면 'Status Code' 헤더에 상태 코드가 숫자로 표시된다. 이것은 우리에게 response의 상태를 알려주기 때문에 매우 중요하다. 숫자 코드를 사용하여 HTTP 응답 결과를 다섯 가지 상태로 나타낸다.

응답 코드의 종류는 많지만, 100 단위로 의미가 있습니다. 200번대 코드는 성공을, 300번대 코드는 리다이렉션을, 400번대 코드는 클라이언트 이슈로 인한 에러, 500번대 코드는 서버 이슈로 인한 에러를 의미합니다.

 

1xx (Informational): 요청이 수신되어 처리중
2xx (Successful): 요청 정상 처리
3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행 할 수 없음
5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

 

더 많은 종류들은 다음 이미지를 참고하세요.

출처 : status code




8. 브라우저가 HTML 컨텐츠를 보여준다.

브라우저는 응답받은 HTML을 화면에 단계별로 표시한다.

  1. HTML 골격을 렌더링한다.
  2. HTML 태그를 확인하고 이미지, CSS 스타일시트, 자바스크립트 파일 등과 같은 웹 페이지의 추가 요소에 대한 GET 요청을 보낸다.
  3. 정적 파일(Static File)은 브라우저에서 캐싱되므로 다음에 페이지를 방문할 때 다시 가져올 필요가 없다.
  4. google.com 페이지가 브라우저에 나타난다.

 

각 end host와 중간의 network router 장비들이 최종의 목표를 이루기 위해 워낙 복잡한 일들을 하다 보니, layer로 moduling을 하게 됨.

 

맨 위의 application layer에 developer가 만든 application을 support하는 protocol이 있고, 그 밑의 transport layer에서 application layer process를 찾아 process to process communication을 지원을 했고, 이제 3계층 network layer로 내려온 것.

 

3계층의 network layer은 다섯 개의 layer 중 꽃, 인터넷을 설명하는 핵심 계층. 3계층의 network layer은 forwarding  routing 두 개의 function으로 나뉨

 

forwarding은 router안에서 local하게 한 hop을 지나가는 것 (input port → output port, one hop delivery),

 

routing은 여러 개의 router가 collaboration하여 source부터 dest까지의 경로를 찾아 routing table을 만드는 것

이 두 가지 function을 각각의 라우터(traditional)가 모두 가지고 있음

chapter goals

4장에서는 forwarding 하기 위해 router가 어떻게 동작 하는지 볼 것

5장에서는 routing 하기 위한 router의 동작을 볼 것 → forwarding 가능

  • understand principles behind network layer services, focusing on data plane:
    (data plane: end user가 보낸 data를 forwarding 하는 역할)
    - network layer service models
    - forwarding versus routing
    - how a router works
    - generalized forwarding (new paradigm: SDN)
    이전까지는 destination IP based forwarding,
    새로운 paradigm의 router은 plus alpha를 봄 (generalized)

4.1 Overview of Network layer

  • data plane forwarding
    : end user가 보낸 data를 forwarding (app. data at host)
  • control plane routing
    : router를 운용하는 engineer가 사용하는 msgs
    router에는 router engineer들이 사용하는 4, 5계층이 존재. (end user가 사용X). TCP, UDP를 사용
  • data plane (forwarding) & control plane (routing)

 

  • → end hosts(양쪽)와 routers(중앙).최종 목표: client host가 server host와 메시지를 주고 받는 것host의 router에는 forwarding을 위한 Data Plane만 존재 (forwarding table만 존재). routing protocol 돌리지 않아서 Control Plane은 없음
  • Datalink layer는 Ethernet, Wifi, fiber optic일 수도, 여러 가지가 있음
  • NW의 traditional router에는 Network layer에 Data Plane과 Control Plane 모두 존재.
  • router의 기능을 마찬가지로 세 계층으로 나누어 놨음

4.2 What’s inside a router

router의 내부구조와 실제 모습

 

 

FastEthernet이라고 적힌 부분 (파란색) 이 Ethernet port 이고 그 이더넷 포트 윗부분에 있는 포트 ( 빨간색) serial prot 이다. 오른쪽 아래 대각선에 보이는것(초록)이 console port 이고, 그 옆 포트는 aux port 이다 

 

이더넷 포트 : LAN 장비들과 주로 연결되는 인터페이스. LAN 구간에 대한 기본적인 게이트웨이를 수행한다. 

MAC 주소가 기본 설정 되어있고, IP 주소 설정이 필요한 인터페이스이다. 연결 케이블로는 UTP 케이블이 있다. 

 

시리얼 포트 : WAN 구간과 연결되는 인터페이스이며, IP 주소 설정이 필요하다. 사용하는 프로토콜은 HDLC(시스코전용), PPP, Frame-Relay가 있으며, Cisco 라우터는 기본적으로 HDLC 프로토콜로 설정되어 있다. 연결 케이블로는 v.35 케이블이 있다.

 

콘솔 포트 : PC 시리얼 포트와 연결하여 라우터를 설정하거나, 라우터 관련 정보 확인을 할 때 사용한다. PC와 연결하면 바로 접속이 가능하기 때문에 패스워드 설정을 반드시 수행할 필요가 있다. 

 

옥스 포트 : 콘솔 포트와 비슷한 용도로 사용되며, 모뎀과 연결하여 원격에서 라우터를 제어할 때 사용한다. 

 

4.3 IP: Internet Protocol

network layer의 가장 유명한 프로토콜, Internet Protocol (IP)
프로토콜 ⇒ msg format, order, 주고 받을 때 action 정의

  • datagram format (3계층에서 사용하는 PDU = datagram)
    • fragmentation (IPv4에서만 fragmentation 기능, IPv6는 X)
    • IPv4 addressing (datagram을 구분할 수 있는 방법, IPv4 주소)
    • network address translation (private IP = reusable → public IP = routable)
    • IPv6 (대부분의 NIC 카드엔 IPv4와 IPv6의 주소가 모두 있음)

4.4 Generalized Forward and SDN

새로운 패러다임의 router가 등장하면서 새로운 forwarding (dest IP + a)

  • match
  • action
  • OpenFlow examples of match-plus-action in action

network layer는 end host에도, router에도 존재. host의 network layer에서는 datagram만 만들면 됨. UDP가 내려왔을 땐 IP 계층에서 fragmentation을 하기도 함. (TCP 사용 시 TCP segmentation, UDP는 하지 않기 때문에 IP fragmentation을 함) but routing protocol X

default router로 가는 forwarding 한 번은 하나 routing은 하진 않음.

network의 router가 진정한 routing과 forwarding을 한다. (host에 있는 것 X)

 

Network layer

  • network layer protocols in every host & router

host에도 있고, NW router에도 있지만 기능이 다르다.
host는 forwarding만 (Data Plane), router는 Data Plane + Control Plane

  • delivers segment from sending to receiving host• on sending host ) encapsulates segments(L4) into datagrams
    • on intermediate routers ) forwards datagram(user data in end host), router examines header fields in all IP datagrams (패킷 단위로 delivery 되기 때문에 각 패킷에 있는 헤더를 다 보고 forwarding)
    • on receiving host ) decapsulates datagram into segments
  • router의 핵심. Core Network는 빨리 deliver 하는 게 목적이라 복잡한 일은 그 윗단에서 end host가 처리하도록 함 (Ex. DNS resolution을 host가)
    Network layer의 핵심은 host-to-host delivery

NW layer implements the host-to-host communication service.

NW layer is the most complex layers in the protocol stack.

Network service model

end host에서 출발한 user의 data를 어떻게 처리하는가?에 중점

What service does the network layer provide to the transport layer?

네트워크 계층의 목적은 host-to-host delivery. 호스트를 찾아가는 전달 하는 일

최종 고객인 application이 어떤 delivery를 요구?
docs를 받거나 저장된 영상을 부러오는 app이면 loss에 민감, 실시간으로 streaming되는 콘서트나 스포츠 중계하는 app이면 delay나 throughput에 민감

  • example services for individual datagrams:
    하나의 message를 deliver하는데 요구될 수 있는 것들
    - guaranteed delivery ⇒ no loss
    - guaranteed delivery with bounded e2e delay ⇒ delay limit
    loss가 없지만 최소한 언제까진 도착하도록 요구
  • example services for a flow of datagrams:
    일련의 message들을 deliver하는데 요구될 수 있는 것들
    - in-order datagram delivery
    IP가 하지 못 함. TCP가 함
    - guaranteed minimum bandwidth to flow ⇒ throughput
    throughput-sensitive apps 들이 요구할 수 있음
    초당 몇 개는 보낼 수 있도록 요구
    - restrictions on changes in inter-packet spacing
    늦어도 상관 없지만 패킷 간 간격이 일정한 속도론 오도록 요구
    delay variation(delay jitter)가 적어야 함

Core network 의 핵심 delivery 두 가지

  • CS (Circuit-switched networks)
  • PS (Packet-switched networks)
    • VC NW (Virtual Circuit) (ATM)
      하나의 link를 논리적으로 나누어 virtual circuit을 설계
      Packet switching에 Circuit switching의 장점을 혼합, 실패
      Resource reservation: buffer, bandwidth, CPU
      Fixed same path for pkts belongs to the same msg)
      complexity inside network
    • Datagram NW (Internet)
      smart end systems & simple inside network, complexity at "edge"
      복잡한 건 end host가 다 함 (DNS 까지)
      "elastic" → no guaranteed band/delay (IP protocol)
      = minimal service guarantees
      makes it easier to interconnect networks that use very heterogeneous(Ex. Ethernet, Wifi, fiber optic ..) link-layer technologies
      (4계층은 동일한 IP프로토콜을 사용하는 3계층들을 지나지만, 3계층은 지나는 hop마다 2계층이 모두 다름. 아무것도 안 해서 다양한 성능을 가진 2계층들을 지나기에 좋음)

Internet protocol (Datagram packet-switching) 은 패킷들 사이의 관계를 모름 (한 메시지를 구성하고 있는 패킷인지 알 수 없음) ⇒ connectionless (이전 패킷과 무슨 관계인지 신경 x)

best effort : 아무것도 보장 해주지 않음

router에선 congestion에 대한 feedback도 주지 않음 (TCP가 Timeout이나 3 dup-ack으로 congestion을 control)

Datagram networks (no in-order)

  • no call setup at network layer
    transport 계층에서 내려온 segment를 바로 encapsulation
  • routers: no state about end-to-end connection
    한 메시지 안의 여러 패킷 간의 관계에 대해 알고 있지 않음
    → 라우터는 패킷들을 개별적이고(individually), 독립적으로(independently) forwarding
  • packets forwarded using dest host(IP) address in datagram header, and forwarding table(FIB) at each router
    FIB를 보고 패킷들을 개별적이고 독립적으로 forwarding. packet 헤더의 destination addr를 보고, router의 forwarding table(FIB: Forwarding Information Base)를 매치해 output port를 찾아 forwarding (switching). router의 ingress buffer → output buffer

→ 패킷들 사이의 관계 정보를 보관하지 않아 in-order delivery가 보장되지 않는 모습

Router (logical)

  • 여기서 Packet은 user의 application에서 생성된 data
  • Forwarding Table (FIB)에는 user(가입자)의 data가 지나다님 ⇒ forwarding

input port로 들어온 data를 output port로 보내는 과정을 Data Plane이라고 함.

Forwarding table (FIB)은 router의 routing protocol들이 만들어 줌.

  • 위는 Control plane(5장). end user는 몰라도 됨, router 운용자가 관심

Control plane에서 지나다니는 routing msg는 SW 엔지니어가 만들어낸 것.

Control plane에서 routing msg를 처리.

Routing Protocol로 Routing Table (RIB)를 만들어 루트 중 Best of best만 FIB로 보냄.

Network layer: data plane, control plane

Data plane (forwarding)

  • local, per-router function
  • 한 라우터의 input port에 있는 ingress buffer에서 output port에 있는 output buffer로 이동
  • forwarding function

Control plane (routing)

  • network-wide logic
  • 여러 개의 router들을 거쳐 가야 하는 nation wide view
  • 라우터들이 메시지를 주고 받으며 source부터 dest까지의 end-to-end path를 결정
  • two control-plane approaches:
    • traditional routing algorithms:
      = destination IP address based forwarding
    • software-defined networking(SDN)
      = generalized forwarding

Interplay between routing and forwarding

  • 위는 routing algorithm으로 control plane에서 해주는 것
  • 밑은 user data가 왔을 때 data-plane에서 해주는 것.

이 차이는 RIB에서 FIB로 경로 중 best of best만 보내줌

FIB는 host에도 있음 (default router로 한 hop은 보내야 하니까)

FIB에는 destination IP address로 가는 output port 번호가 적혀있음

Forwarding table은 static하게 만들 수 있음 (editing이 가능)

RIB가 경로를 계속 바꿔 FIB에게 전달할 수 있음. but, FIB만 있다면 static하게 고정

Per-router control plane

같은 machine 안에 control plane과 data plane이 모두 있다는 것을 나타낸 그림

control plane은 모든 라우터에 다 들어있다. 라우터들끼리 메시지를 주고 받으며 FIB로 내려보냄

forwarding은 destination ip 주소만 보고 forwarding

⇒ Destination-based forwarding (traditional)

Logically centralized control plane

control plane과 data plane이 분리 되어 있음.

user의 data가 지나가는 data plane들은 physically 모여 있음.

control plane은 remote하게 멀리서 제어 (한 라우터에 있지 x)

control plane이 data plane을 제어하고, data plane은 forwarding만 해줌

⇒ generallized forwarding


4.2 inside a router

Cisco는 유명한 router 개발 업체. 여러 개의 보드로 이루어짐.

주황색은 switch module, 여기서 input port to output port switching을 해줌

빨간색은 control module, 이게 control-plane.

switching speed가 매우 빨라 ingress buffer에서의 delay는 거의 없음.

Queueing delay와 output link의 Band Width 제약이 TI를 높임

Router architecture overview (per-router)

router의 구조는 크게 input port(나오면 output port가 될 수도 있음), output port, switching, routing protocol이 돌아가는 routing processor

control plane은 SW를 처리하기 때문에 속도가 느림

data plane은 hardware 상으로 user data를 지나가게 하므로 거의 속도가 빠름
(ingress buffer에서 패킷 열어 보는 건 software적으로 처리하고 따로 모듈 있음)


Keywords

  • Network service model (requirements): no loss, min. e2e delay, min. BW (pkt/sec), in-order delivery, Delay jitter
  • VC NW (ATM) v.s. Datagram NW (Internet)
  • Datagram packet switching provides best-effort service (no service at all) and thus it can interconnect well networks that use heterogeneous L2 protocols.
  • Local 1-hop forwarding using FIB in each input port (Chap.4)

v.s. NW-wide e2e path using routing protocol (Chap.5)

  • Traditional router includes control plane and data plane both in the same device. v.s. In SDN, a control plane is implemented in a general PC that remotely locates from a packet switch which includes data plane.
  • Why each port has a FIB? -- In order to implement line speed forwarding
  • Decentralized switching means FIB lookup is done using FIB stored in input port memory.
  • Router architecture includes control plane (routing protocol), switching fabric and input/output ports.
728x90
반응형

'자격증' 카테고리의 다른 글

[정보처리기사] 2024년 2회차 실기 준비  (1) 2024.07.08