[네트워크] 12차시 - 네트워크계층(2)

2023. 4. 27. 23:29CS/네트워크

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

 

서브넷과 NAT 개념을 배운다.

 

0. 복습

  • 응용(세션): FTP, DNS, HTTP, SHTP
    • FTP: stateful protocol, TCP connection이 로그인해서 로그아웃할 때까지가 한 세션, 어느 디렉토리에 가서 어떤 파일을 다운받고 있고 까지가 tracking 된다.
    • DNS: 컴퓨터에서 사용하는 IP주소와 사람이 기억하기 쉬운 일반적인 이름을 매핑, 응용계층에서만 사용
    • HTTP: 웹 서비스를 만든 프로토콜, 단순한 설계로 확장성이 높다
    • SMTP: mail.google.com에 웹 클라이언트로 접속해서 메일을 보낼 때는 HTTP를 이용하지만 핸드폰이나 컴퓨터의 메일 클라이언트를 이용해서 메일을 보낼 때에는 SMTP를 이용, 일반적으로 메일을 보내는 서비스만 SMPT, 메일을 받아오는 서비스는 IMAP
  • 전송계층: TCP, UDP, RTP
    • TCP: 바이트 단위로 전송, 보내는 바이트들의 내용의 순서가 바뀌지 않고, 유실이 없음, 지연시간 때문에 전화통화에 적합하지 않음
    • UDP: 패킷이 사라지던, 순서가 바뀌던 신경 쓰지 않지만, 지연시간이 없기 때문에 전화통화에 적합
    • RTP: 실시간 전송을 위한 추가적인 제어 패킷이 붙은 프로토콜
  • 네트워크: IP
    • 주소 개념 지원, 라우팅(경로) 찾기 개념 지원, 주소가 주어졌을 때 패킷을 순차적으로 보내다 보면 최종 목적지까지 가도록 하는 역할을 하는 계층
    • 라우팅: 목적지가 주어졌을 때 각각의 네트워크 중앙에 있는 장비들이 패킷을 받으면 패킷을 다음 단계로 넘겨주는 역할, 재귀적으로
    • 네트워크는 TCP와 묶여서 허리를 이루는 아키텍처
      • IP만 고려해서 응용 계층을 만들면 됨, 링크계층을 고려할 필요가 없다.
      • 링크계층 프로토콜을 만들 때에도 IP만 고려해서 만들면 된다. 응용 계층에 어떻게 서비스할지 고려할 필요 없다.
      • IP를 바꾸기 어려운 문제가 있다.
  • 링크: 이더넷, wifi, LTE, 3G
    • 노드와 노드를 연결하는 링크를 사용, 패킷을 전송하는 링크는 무선, 이더넷, atm 등이 될 수 있다.

 

1. 라우팅

  • DV(Distance Vector) Routing: 주변 정보만을 가지고 라우팅
    • 각각의 노드는 전체 내용을 가지고 있는 것이 아니라 나와 내 주변 노드들이 최종 목적지까지 가는데 얼마큼의 비용이 드는지를 가지고, 내가 목적지까지 가는 비용을 계산하고, 그다음 최적 노드를 계산
    • 주변 정보로 최적값을 찾으면 라우팅에 루프가 생기는 문제가 발생할 수 있다. 루프가 생기면 장비가 죽어버리고, 그 장비를 사용하는 네트워크 라우트가 죽어버리는 현상이 전염되어 네트워크 전체가 다운될 수 있다.
  • LS(Link State) Routing: 전체 네트워크 정보를 가지고 라우팅
    • 네트워크상에서 변화가 생겼을 때 count to infinity 같은 문제를 해결하기 위한 방법
    • 모든 링크의 비용을 계산해서 최적값을 계산, 비용이 많이 들지만 네트워크의 속도에 대비 큰 비용이 아니기 때문에 요즘 많이 사용

2. IP

  • v6: 128bit 주소체계
    • 2A:38:98:68:43:39:5B:1C
  • v4: 32bit 주소체계
    • 192.67.42.45

 

3. 라우팅 테이블(= 포워딩 테이블)

  • 목적지, 비용, next hop으로 구성
  • Nexthop (목적지 IP) = 다음 hop Node : Nexthop이라는 함수에 목적지 주소를 넣으면 다음 hop에 해당하는 노드를 반환
    • 어떤 IP 주소를 넣더라도 다음 합을 어디로 보내야 할지 결정되어야 함 - 전 세계 IP를 다 넣을 수 있어야 한다.
      → 라우팅을 위해 목적지에 IP를 쌩으로 적는 것은 감당하기 어려운 비용
      대체로 비슷한 곳에 있는 IP는 Next hop이 같을 것 ~ 묶어서 표현하는 subnet
  • subnet: IP 여러 개를 묶어서 하나의 엔트리로 생각할 수 있는 개념
    • a.b.c.d/x : 134.64.0.0/10 → 32bit 전체 중에서 앞에 10bit만 잘라서 subnet part, 나머지 22bit는 host part
    • subnet part만 보고 목적지를 판단하겠다: 라우팅 테이블의 엔트리를 줄일 수 있다.
  • 경로 찾기
    • LAN에서 경로 찾기
    • 서로 연결된 LAN에서 경로 찾기
    • 대표하는 노드 찾기
    • 백본망 - 계층적인 구조가 가능하다.

 

4. IP 패킷의 구조

  • Ethernet 헤더, IP 헤더, TCP 헤더는 바이너리 형식, HTTP부터는 문자열
  • 레이어를 거칠 때마다 헤더가 변경됨

4-1. IP 헤더

  • 버전, 헤더 길이, 서비스 타임, 전체 Packet 길이(16bit)
    • IP는 헤더 길이가 가변적이다
  • 16bit 패킷 ID, flag, fragment offset
    • 동일한 ID에 대해서 fragment를 여러 조각내고 같은 ID의 fragment들을 조합한 덩어리를 TCP에 올림
    • fragment offset: 중간에 조각낼 수 있게 해 줌
  • TTL, upper layer, header checksum
    • TTL은 라우터로 가는 hop수가 무한히 돌아 장비를 죽이는 일이 없게 하기 위해서 사용
      • 1 합마다 1씩 감소 → 0이 되면 trash
      • TTL을 작게 잡으면 목적지가 없는 패킷(= 네트워크 전체로 보내는 패킷)의 범위를 좁게 조절할 수 있다.
    • header checksum: header 자체가 전송되다가 중간에 noise나 interference에 의해 바뀐 비트가 있는지를 검사
      • TCP에도 checksum이 있기 때문에 IPv6에서는 사용하지 않음
  • Source IP 주소: 전송 측 IP 주소
  • Dept IP 주소: 목적지 IP 주소
  • optional: 확장된 IP를 만들고 싶을 때 사용, 확장된 내용을 추가할 수 있고 이로 인해 헤더 길이(가변적)를 설정할 수 있다.
    • IPv6에서는 지원하지 않음: optional 때문에 헤더 길이가 유동적이게 되고, 유동 적인 헤더 길이는 전체적인 프로세싱의 지연을 유발함
  • 본문: IP 입장에서의 본문일 뿐 실제 본문은 아니다. TCP헤더를 포함한 본문

4-2. IP Fragmentation

  • 프로토콜이 다른 링크 간에 패킷을 보내려면 라우터에서 IP Fragmentation을 해주어야 한다.
    • 애초에 TCP라면 세그먼트 크기를 4000 Byte로 하지 않았을 수 있고
    • UPD는 데이터그램 크기를 IP가 임의로 자를 수 없다. 전송 단위가 패킷이기 때문에
  • 라우터: 서로 다른 링크 레이어를 연결해 주는 역할, 위에는 IP 레이어, 아래의 양단에는 서로 다른 두 레이어가 위치한다.
    • 이더넷 → IP → 광섬유로 올리는 과정에서 IP Fragmentation 해주어야 한다.

  • IP 헤더 기본 크기 20 Byte → 본문의 크기 3980 Byte
  • flag fragment: 그 뒤에 추가적으로 남은 내용이 있는지를 알려줌
  • offset: 전체 패킷에서 어디부터 시작하는지를 알려줌, 8 Byte 단위로 끊어 계산

⇒ 원래 IP에서는 1 덩어리였던 게 3 덩어리로 나뉘어서 Fragmentation 해서 전송됨, 다음 단계에서 굳이 합체하지 않아도 됨 마지막에서 합쳐져도 됨 구현에 따라 달라짐

  • 마지막 단에서 하나의 IP 데이터그램이 되어 윗 레이어(TCP, UDP)로 올라가서 처리
  • 하나라도 오지 않으면 안 됨
  • IP 단에서는 패킷이 왔는지 잘 왔는지 관여하지 않고 TCP 레이어가 관리

 

5. IP 할당

  • ISP 또는 기관에서 subnet 영역 할당받음
    • IP를 관리하는 국제기구 ICANN(Internet Corporation fer Assigned Names & Numbers)에 요청함
  • 서버 운영시 state IP를 ISP 또는 기관에서 요청하여 할당받음
    • 기계에 수동 입력
  • DHCP(Dynamic Host Configuration Protocol)
    • 서버가 아닌 경우
    • 처음 요청할 때 Src: 0.0.0.0, Dst: 255.255.255.255
      • 255.255.255.255: broadcast: 모든 노드(DHCP 서버 포함)가 듣도록 하는 IP 주소, UDP 기반, TTL 세팅해줘야 함
    • DHCP 서버가 남는 IP 중 하나를 골라서 응답을 한다.
      • Src: 서버 주소, Dst: 255.255.255.255
    • 자신이 요청했던 ID와 응답한 ID가 동일한 것을 알고 IP를 할당받을 수 있음
    • ID를 브로드캐스트로 요청 → DHCP 서버에서 ID와 IP 응답 → 여러 개의 응답을 노드가 받았다면 그중 하나를 선택해서 confirmation → DHCP 서버에서 ACK과 least time을 보낸다.
    • lease time(수명): 유효한 시간만큼만 IP를 할당, 노드는 재요청을 해서 least time을 연장
    • 네트워크를 사용하지 않을 때에는 IP에 연결되어 있지 않기 때문에 IP를 유동적으로 사용 효율을 높일 수 있다.

 

6. NAT(Network Address Translation)

  • 게이트웨이는 Global IP를 가지고 있고, 그 아래의 LAN 안에서의 IP는 local IP를 가지고 있다. 그렇기 때문에 LAN안의 local IP는 LAN 안에서만 유니크하다.
  • Globlal IP를 가진 게이트웨이가 전체 LAN을 대표한다.
    • local IP가 구글 서버에 연결해도 구글 서버에서는 Global IP가 접속한 것처럼 보인다.
    • local IP안에 IP가 다르지만 같은 포트번호를 쓰는 경우 구글 서버에 접속할 때 같은 IP로 보이기 때문에 TCP 포트 번호까지 바꿔야 한다: IP 레이어와 TCP 레이어를 같이 봐야 한다.
  • 원칙적으로는 IP 패킷은 처음부터 끝까지 갈 때까지 변하면 안 되지만 NAT 기법에 한해서는 Global IP를 담당하는 NAT 게이트웨이를 지나갈 때 local IP가 자신의 global IP로 변함
  • NAT local IP로 사용할 수 있는 subnet: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

6-1. Port Maapping Table

  • NAT Router는 IP를 2개 가진다: 안 쪽에서 대표할 수 있는 IP(= local IP에도 연결), 바깥쪽에서 대표할 수 있는 IP(= global IP에도 연결)
  • port mapping Table에 의해서 NAT 영역 밖으로 나갈 때 Port가 변조됨
    • 구글 서버에서 볼 때에는 같은 기기의 서로 다른 포트에서 연결한 것처럼 보임
  • IP 헤더의 Src에는 IP 주소, TCP 헤더의 Src에는 포트번호 → 하나의 소켓

6-1-1. Endpoint-independent mapping Table(EIM)

 

 

  • local IP, Port Number, Global Port Number
  • 단점) 서비스할 수 있는 노드의 개수가 포트의 개수(16bit)로 제한되어 있음
    • 해결책) Endpoint-dependent mapping Table

6-1-2. Endpoint-dependent mapping Table(EDM)

  • Src local IP, Src local Port, Dept IP → Src Global Port
  • 앞에 있던 포트를 재사용할 수 있다.
    • 다른 서버에 같은 포트로 접속했다고 해도 LAN에 응답을 보낼 때에는 Src Port Number에게 따로 보내기 때문에 재사용할 수 있다.
    • 같은 Src Global 포트로 구글, 네이버, 다음에 접속할 수 있다. 목적지가 다르기 때문
    • 안에서 서비스할 수 있는 노드의 개수가 훨씬 더 증가
  • 테이블 내에서 Dept IP와 Src Global의 쌍은 언제나 유일해야 한다.
    • Src local IP, Dept IP와 Src Global의 쌍도 언제나 유일해야 한다.

⇒ 하나의 포트번호가 안 쪽에 있는 하나의 포트만 대표하는 것이 아니고 여러 개의 포트를 대표할 수 있도록 재사용하는 것

6-2. NAT에서 P2P 지원

  • Static map 사용
    • B의 GW안에 Static map을 사용하면 B머신에 웹서버를 설치할 수 있다.
    • port mapping을 static 하게 설정
    • 문제점
      • 사전 설정이 필요 = 사용자의 지식 필요
      • 안에 있는 머신 중에 하나만 같은 포트 번호에 static mapping이 가능
  • Relay host
    • skype 서버 혹은 기계 중 하나가 relay host가 되는 것
    • 서버가 B에게 relay host와 TCP/UDP 연결 설정을 하고, 연결이 끊어지지 않도록 띄엄띄엄 패킷을 보냄
      • GW안에 port mapping이 있는 상태, relay host는 B를 대표하는 상태
      • 포트 연결: A → A의 GW → Relay host → Relay host와 B는 port mapping이 되어 있는 상태
      • 완전히 직접은 아니다.
    • NAT 내부의 노드는 사전에 Global IP를 가지는 Relay host와 영구적인 연결을 설정
      • 언제 연락이 올지 모르기 때문에 연결을 계속 살려둠
    • EDM, EIM 모두 사용 가능
  • hole puncturing
    • Global IP를 가지는 서버와 NAT 내부의 클라이언트가 사전 연결 과정을 가짐 → 각 NAT Router의 port mapping table에 등록 → 노드가 연결을 시도할 때 해당 port를 알려준다
      • 연결되는 홀 자체를 서버가 미리 뚫어 놓고 있다가 홀 번호를 알려줌
    • A-GW -(영구적인 연결)- skype -(영구적인 연결)- GW-B
      • EIM은 포트번호가 1:1 매핑, LAN안의 노드와 GW는 EIM으로 연결
      • 포트 매핑 테이블이 계속 업데이트됨
      • 포트만 뚫어둔 상태에서 연결을 하고자 하면 skype가 게이트웨이의 포트번호를 알려준다
    • 문제점) 사전 정보가 없어서 누가 연결했는지에 따라서 안쪽 포트번호가 달라지기 때문에 EIM에서만 가능하다.

 

[복습]

  1. 응용(세션): FTP, DNS, HTTP, SMTP / 전송: TCP, UDP, RTP / 네트워크: IP / 링크: 이더넷, wifi, LTE, 3G
  2. 라우팅
    • DV Routing: 주변 정보만을 가지고 라우팅
    • LS Routing: 전체 네트워크 정보를 가지고 라우팅
  3. 라우팅 테이블 
    • 목적지, 비용, next hop으로 구성
    • 라우팅을 위해 모든 목적지에 IP를 쌩으로 적는 것은 감당하기 어려운 비용이 들기 때문에 대체로 비슷한 곳에 있는 IP는 Next hop이 같을 것으로 생각해 묶어서 표현하는 subnet을 사용한다.
    • IP주소는 subnet part와 host part로 구성되어 있는데 subnet part만 보고 목적지를 판단하면 라우팅 테이블의 엔트리를 줄일 수 있다.
  4. IP 헤더
    • 버전, 헤더 길이, 서비스 타임, 전체 packet의 길이
    • 16 bit 패킷 ID, flag, fragment offset
    • TTL, upper layer, header checksum
    • Source IP
    • Dept IP
    • Optional
  5. IP Fragment: 큰 IP 패킷을 작은 조각으로 쪼개어 전송하는 방법
    • 라우터: 서로 다른 링크 레이어를 연결해 주는 역할
    • IP 헤더 기본 크기 20Byte
  6. IP 할당: DHCP: UDP 기반 프로토콜, 서버가 네트워크 클라이언트에게 IP 주소를 실시간으로 부여할 수 있도록 하는 것
    • 255.255.255.255 : 브로드캐스트: 모든 노드가 듣도록 하는 IP 주소
  7. NAT: IP 패킷에 있는 출발지 및 목적지의 IP주소와 TCP/UDP 포트 숫자 등을 바꿔 재기록하면서 네트워크 트래픽을 주고받게 하는 기술
    • Endpoint-dependent mapping table: local port당 global port 1개를 매핑하기 때문에 서비스할 수 있는 노드의 개수가 포트의 개수로 제한되어 있다.
    • Endpoint-independent mapping table: Global 포트번호를 재사용할 수 있음
    • P2P 지원: static map, relay host, hole puncturing

 

 

 

 


한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다감사합니다.

http://www.kocw.net/home/cview.do?lid=2943ffb74ce0e2b8 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

http://www.kocw.net/home/cview.do?lid=69f7b6804b2d6061 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

 

728x90