| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- OAuth 2.0
- lombok
- synchronized
- factory
- spring security
- Dependency Injection
- 일급 컬렉션
- Volatile
- Google OAuth
- java
- builder
- 일급 객체
- Spring
- Today
- Total
HJW's IT Blog
Computer Network: 10주차 본문
IPv4 Address Exhaustion
> IPv4의 주소는 거의 다 소진됨
> 해결방안 :
>> DHCP(Dynmic Host Configuration Protocol)
>> NAT(Network Address Translation)
>> IPv6(IP version 6)
DHCP: Dynamic Host Configuration Protocol
> 목표: Host 들이 네트워크 접속시 동적으로 IP를 할당 받을 수 있도록
>> 사용중인 주소 renew 가능
>> Connected 된 동안만 주소를 hold --> reusable
>> 동작방식은 다음과 같다
<호스트가 "DHCP discover" 을 알린다>
<DHCP 서버가 "DHCP offer" 으로 응답>
<호스트가 IP 주소 요청: DHCP request>
<DHCP 서버가 주소를 보내줌: DHCP ack>

>> DHCP 는 IP 주소 이외에도 다음 사항들을 반환 가능
>> 클라이언트의 first hop router address
>> DNS 서버의 이름과 IP 주소
>> Network Mask (주소의 네트워크 부분과 호스트 부분을 나타낸다)
<DHCP Example>
1. 가정: 노트북을 연결하려 한다
2. 연결시 필요한 정보는: IP 주소, first-hop router주소, DNS 서버 주소
3. 암호화된 DHCP 요청을 UDP로 요청
4. LAN 에서 이더넷 프레임은 브로드캐스트 되고 DHCP 서버를 실행 중인 라우터에서 수신된다
5. 이더텟은 IP 로 디 멀티플랙싱 되고, UDP 는 DHCP로 디멀디플랙싱이 된다.
6. DHCP 서버는 DHCP ACK을 생성 -> IP 주소, first-hop router 주소, DNS 서버주소 내용이 담겨 있음
7. DHCP 서버의 캡슐화 완료, 프레임은 클라이언트로 전달, 클라이언트에서 DHCP 로 디 멀티플랙싱
NAT: Network Address Translation
> 로컬 네트워크를 떠나는 모든 datagram들은 모두 같은 NAT IP 주소를 가지고 있다. 포트 넘버가 다르다.
> Motivation: Local Network 는 하나의 IP 주소를 사용
>> ISP 를 위해 IP의 범위 필요 x, 모든 장비들에게 하나의 IP 주소 할당
>> 바깥에 알리지 않고 주소를 바꿀 수 있음
>> ISP를 로컬 네트워크의 장비들의 주소를 바꾸지 않고 바꿀 수 있음
>> 로컬 네트워크 내에 있는 장비들은 바깥에서 콕 찝을 수 없다.
> Implementation: NAT 라우터는 다음 사항들을 수행해야 한다
>> 송신되는 datagram:(source IP 주소, 포트 #) 를 (NAT IP 주소, new 포트 #) 로 replace. 멀리있는 client/server는 (NAT IP 주소, new port #) 를 사용해 목적지로 도달
>> 모든 (source IP 주소, 포트 #) & (NAT IP 주소, new 포트 #) 짝을 기억한다
>> 수신되는 datagram: dest field 내에 있는 (NAT IP 주소, new 포트 #) 를 알맞는 짝과 바꾼다.
> NAT 는 16-bit port # field를 가진다.
> 논란이 있는 기술이다.
> 라우터는 레이어 3 까지만 처리해야 한다
> 주소 부족은 IPv6 로 처리되어야 한다
> end-end 원칙을 위반한다
> 클라이언트가 NAT 뒤에 있는 서버에 연결하려면?? PortForwarding
IPv6
> IPv6는 왜 만들어 졌는가?
>> 32-bit 주소공간이 곧 소진된다
>> Header format 이 네트워크 의 프로세싱, 포워딩을 향상시킨다
>> IPv6 datagram 은 고정길이 40 byte 의 header 를 가지고 있으며 fragmentation 이 불가능 하다

>> PRI: 전송되는 datagram들 중 우선순위
>> Flow Lable: 패킷의 흐름을 구분하기 위해
>> Next Header: 상위 계층 프로토콜을 구분한다
>> No Checksum
>> Fragmentation: src/dest 노드에서만 가능하다
> 모든 라우터가 동시에 upgrade 될 수 없다.
>> No Flag Days
>> 그렇다면 IPv4 와 IPv6를 어떻게 동시에 사용할까?
>>> Tunneling: IPv6 datagram들이 payload 로써 IPv4 datagram 에 실려 전송


> IPv6 가 모두 적용되기에는 오랜 시간이 걸린다.
ICMP: Internet Control Message Protocol
> 호스트와 라우터가 network-level 정보를 통신하기 위해 사용한다
>> 도달할 수 없는 호스트, 네트워크, 포트, 프로토콜
>> Echo request, reply
> ICMP 메세지는 IP datagram에 들어있다
> ICMP msg: type, code + first 8 bytes of IP datagram causing error
Traceroute and ICMP
> Source 가 Dest로 여러 UDP segment 들을 보낸다 ( 첫번째: TTL = 1, 두번째 : TTL = 2 ...)
> n 번째 datagram 이 n번째 라우터에 도착하면 라우터는 datagram 을 버리고 ICMP msg를 보낸다
> ICMP msg는 라우터의 이름과 IP 주소를 보유
> ICMP msg가 오면 sorce는 RTT를 기록
> UDP segment가 결국 dest host 에 도착 -> Dest 가 "port unreachable" ICMP 를 반환 -> source stops
'컴퓨터 네트워크' 카테고리의 다른 글
| Computer Network: 12주차 (0) | 2023.05.24 |
|---|---|
| Computer Network: 11주차 (0) | 2023.05.21 |
| Computer Network: 9주 (0) | 2023.05.19 |
| Chapter 4.5: Routing Algorithm (0) | 2023.05.16 |
| Connection Oriented Transport: TCP (0) | 2023.04.17 |