※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다.
출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다.
Dynamic Host Configuration Protocol(DHCP)
- ipconfig를 통해 알수있는 IP 주소
IP: 192.168.1.47
subnet mask: 255.255.255.0
route: 192.168.1.1
DNS: 192.168.1.1
- 알수 있는 정보
1. subnet mask를 통해 prefix를 알수있다
2. 라우트는 항상 첫번째 IP주소를 가진다
3. 라우터가 DNS로 송출하는 역할까지 담당한다
- 저 4가지 주소는 필수적임, 그걸 담당해서 배정하는 프로토콜이 DHCP 프로토콜
- 매번 컴퓨터를 부팅할때마다 동적으로 저 4가지 주소를 배정해줌
동작과정
- 하나의 기관에 10,000개의 네트워크 사용자가 있을 경우 IP주소 10,000개를 다 사용하는 것이 아닌 대략 1,000개 정도만 사용하면서 사용하는 사람에게만 그때그때 빌려주고, 다 사용하면 회수하는 방식으로 사용됨
- 처음에 부팅해서 네트워크에 연결하면 자기 IP주소도 모를뿐더러 자기 IP 주소를 설정해줄 DHCP 서버도 알지 못함
1) DHCP discover
- 클라이언트가 네트워크에 접속하면 처음에는 IP주소 0.0.0.0을 가지고 있음
- 클라이언트는 랜덤한 숫자인 transaction ID를 지정해놓음
- dest가 255.255.255.255 라는 것은 브로드케스트로 해당 서브넷의 모든 주소에게 다 보낸다는 뜻임
- 모든 IP주소에 DHCP discover를 보냄
- DHCP 프로토콜의 포트번호는 67번, 그래서 다른 것들은 67번을 닫아놔서 무시하고, DHCP 서버만 67을 열어놔서 응답함
2) DHCP offer
- 이때 아직도 클라이언의 IP주소가 없기 때문에 응답도 브로드케스트로 보내야됨
- 처음 응답 보낸 포트가 68번이기 때문에, 68번이 열려있는 클라이언트만 응답을 받게 됨, 그리고 transaction ID를 통해 확인함
- yiaddrr: 새로 지정해준 IP 주소
- lifetime: IP주소 유효기간
- 사진에 적혀있는 정보 뿐 아니라 IP,서브넷마스크,라우터,DNS등 4가지 IP 주소 정보가 담겨 있음
3) DHCP request
- 클라이언트는 새로 받은 IP주소를 사용하겠다 라는 뜻으로 request를 한번 더 보내야됨
- 아직 배정된 IP주소가 없기 때문에 이번에도 0.0.0.0으로 보냄
- 여러 DHCP 서버에게 내가 정한 DHCP를 알려주기 위해 브로드케스트로 보냄
- transaction ID 하나 플러스해서 request 의미로 보냄
4) DHCP ACK
- 똑같은 방식으로 ACK를 보냄
- ACK를 받으면 그때부터 클라이언트에 IP주소가 배정됨(서브넷 마스크, 라우트, DNS까지)
보충:
- DHCP 서버를 따로 두기 보다는 통상적으로 라우터가 다 처리함
- 게이트웨이 라우터는 포워딩만 담당하는거였으나 NAT, DNS뿐 아니라 DHCP 역할까지 담당함
- 가정에 있는 무선 공유기가 게이트웨이 라우터임, NAT, DNS, DHCP기능을 가지고 있음
- 그 공유기가 또다른 NAT에 포함되어 있을수도 있음
- IPv4의 고갈로 현재 임시방편인 NAT에 종속되어있는 상태, NAT를 안쓰기도 IPv6로 바꾸기도 어려운 상태임
IP fragment
- 데이터가 전송될때 많은 링크들을 거쳐가는데, 각 링크마다 보낼수 있는 최대 패킷 크기(MTU)가 다 다름
- 보내진 패킷보다 MTU가 작을때 그 즉시 분할을 함, 그걸 fragment라고 함
- 쪼개진 패킷들은 도착지에 도착하면 다시 합쳐짐, reassemble됨
- fragment에 필요한 것이 IP 헤더 중 16-bit identifier, flgs, offset임
- 위 사진에서는 4000바이트 데이터를 보냈는데 MTU가 1500바이트인 링크를 만났을 경우
- length는 1500씩으로 쪼갬
- ID는 원래 하나의 패킷인걸 확인하기 위해 모든 쪼개진 패킷이 동일
- fragflag는 내 뒤에 연결된 패킷이 존재하면 1, 마지막이거나 안쪼개졌으면 0
- offset일 경우 쪼개진 바이트의 첫번째 위치 나누기 8(나누는 이유는 데이터 저장 공간을 줄이기 위해)
- 만약 쪼개진 패킷이 유실됬을 경우 도착지에서 reassemble이 안됨, 그래서 버려지고 전체를 재전송해야됨
ICMP: internet control message protocol
- 데이터 전송시 네트워크상의 환경을 알려주는 프로토콜
- TTL(time to live)이 0이되서 드랍될 경우 해당 라우터에서 IP 패킷을 생성해서 전송자에게 TTL이 0이되서 드랍되었다 라고 알려줌
'[CS] > [컴퓨터네트워크]' 카테고리의 다른 글
링크계층 - MAC protocol (0) | 2021.06.25 |
---|---|
네트워크계층 - 라우팅 알고리즘 (0) | 2021.06.13 |
네트워크계층 - IP 프로토콜 (0) | 2021.06.13 |
중간복습 - Network, Application layer, Transport layer (0) | 2021.03.15 |
전송계층3 - TCP Protocol (0) | 2021.03.11 |