본 내용은 경희대학교 소프트웨어융합대학 이성원 교수님의 수업을 바탕으로 작성하였습니다.
More Issues
DHCP
- 조직에 주소 블록이 할당된 후, 네트워크 관리자는 호스트나 라우터에 수동으로 주소를 할당가능
- 조직 내에서 주소 할당은 동적 호스트 구성 프로토콜(DHCP)을 사용하여 자동으로 수행가능
- DHCP는 클라이언트-서버 패러다임을 사용하는 애플리케이션 계층 프로그램으로, 네트워크 계층에서 TCP/IP를 지원
- DHCP 필요할 때 IP address를 빌려 쓰고 반납하는 것
- DHCP 프로토콜도 위 형태를 갖춘 메시지들 네트워크 상에서 주고받음으로써 본인이 IP 주소가 없는 환경에서 IP 주소 및 네트워크 정보를 받아서 세팅을 할 수 있게 동작을 한다.
- option 필드를 사용하면 의미를 담을 수 있다.
- 회색은 IP 계층이고 주황색은 UDP 계층 하얀색을 application
- UDP는 connectionless, 필요할 때 보내고 기다리다 받고 연결설정 과정이 없음, 3 계층의 네트워크 주소를 세팅하기 위해서 4 계층의 UDP를 사용하고 UDP는 하는 일이 별로 없기 때문에 클라이언트-서버가 별도의 연결과정을 거치지 않아도 주고받을 수 있다.
- DISCOVER는 다른 애들한테 내가 IP 주소가 없으니 달라고 줄 사람을 찾는 것
- OFFER는 서버 혹은 서버들이 제안을 한다. 그러면 일정시간 동안 클라이언트가 기다리고 2개 이상으로부터 오퍼가 올 수 있음
- REQUEST는 온 제안들 중에서 한 곳을 선정하는 것.
- ACK는 서버가 IP 주소를 준다.
- network layer IP주소가 없기 때문에 벌어지는 일이다. 그러면 메시지 안으로 들어와서 DISCOVER의 소스 주소와 목적지 주소를 자세히 보면 IP header의 소스 주소는 본인인데 IP주소가 없으니 0으로 서버가 있는지 없는지도 모름, 서버가 있다고 하면 둘 이상이 들어왔으면 좋겠으니 IP header의 목적지 주소는 모두 bit를 1로 채워서 255 255 255 255로 되어있다.
- 서버는 OFFER를 할 건데 IP 쪽의 필드를 보면 소스 주소는 본인 170 목적지는 다 들으라고 255 255 255 255
- DHCP를 사용함으로써 IP 주소가 없는 상태에서 IP 주소를 부여받은 상태가 된다.
- 유무선 공유기에 접속할 때마다 이 과정이 일어난다.
NAT
- 과거 컴퓨터가 IP주소가 부족하니까 생각해 냈던 방법
- 대부분의 상황에서 소규모 네트워크의 일부 컴퓨터만 동시에 인터넷 접속이 필요함
- 네트워크 주소 변환(NAT) 기술은 사설 주소와 전역 주소 간의 매핑을 제공하고 가상 사설 네트워크도 지원
- 이 기술은 사이트가 내부 통신을 위해 사설 주소 세트를 사용하고, 외부와의 통신을 위해 최소 하나의 전역 인터넷 주소를 사용하게 한다.
- network address translation
- NAT 라우터가 유무선 공유기 안에 들어있는 기능
- 집 안은 노란색 집 밖은 인터넷
- NAT 라우터는 인터넷 하고 연결된 줄에 200.24.5.8을 가지고 있음 이 주소는 누구한테 알려주더라도 다 접속 가능하다.
- 하지만 집안의 172.18.3.30은 집안에서만 의미가 있다.
- NAT 라우터가 커버하고 있는 private zone에서만 의미가 있다.
- 왼쪽과 오른쪽 네트워크를 나누는 애가 있고 왼쪽 애들이 인터넷을 향했을 때 172.18.3.30에 해당하는 IP주소를 200.24.5.8로 1대 N의 관계로 번역해줘야 하는 일이 벌어지는데 이게 NAT
- 집 안에 있는 172.18.3.1이 결국 인터넷으로 무언가를 보내고 싶은 것 그럼 본인의 소스 주소는 172.18.3.1지만 NAT 라우터가 하는 제일 중요한 기능이 소스 주소가 private 한 IP 주소니까 이걸 public IP 주소로 바꿔준다. NAT 라우터가 가지고 있는 유니버설 주소인 200.24.5.8을 달고 나가게 된다.
- 반대로 인터넷에서 200.24.5.8을 달고 오면 본인이 목적지가 아닌데 본인이 받았으니까 다시 원래 private 한 목적지 주소인 172.18.3.1로 교체한 다음에 안으로 밀어 넣으면 해당 컴퓨터가 받는다.
- 이렇게만 했을 때의 문제점은 200.24.5.8을 통해서 인터넷에서 NAT 라우터에 메시지가 도착했을 때 본인은 누구에게 전달해야 할지 알지 못한다. 따라서 소스 주소만 보고 주소를 바꾸는 행위는 동작하지 않는다.
- 테이블이 반드시 존재해야 함.
- 주소만 바꿨을 때, public IP 주소를 목적지로 받은 NAT 라우터는 어디로 보내야 할지 모른다. 왜냐하면 1대 1로 바꾸었기 때문에.
- 따라서 NAT 라우터가 하나의 IP 주소에 대해서 N개의 장치를 지원하기 위해서는 주소 필드, 소스 필드만 볼 것이 아니라, 다른 많은 정보를 봐야 한다. 하지만 문제는 표준이 없다는 것
- 결국 많은 정보들을 가지고 테이블을 구성
- private 존에 있는 두 개 이상의 컴퓨터가 동시에 네이버 접속할 수도 있으니 아래와 같은 정보들을 봐야 한다. 왜냐하면 NAT 라우터는 누구한테 줘야 하는 건지 알 수가 없어서
- NAT 라우터가 private 존에서 출발하는 메시지의 소스 주소만 볼게 아니라 다른 것도 봐야 함 소스 주소의 목적지 주소의 포트 넘버의 기타 등등 많은 것을 보면 볼수록 내가 인터넷에서 받은 것을 성공적으로 소스에게 전달할 가능성이 높아진다.
- 중첩되지 않는 키 값을 만들어낸다. 하지만 이렇게 하더라도 중첩되는 경우가 생길 수 있다. NAT는 그래서 복잡한 메커니즘으로 알아서 구현한다.
Addressing again
- R1이 경희대의 대장 라우터고 안에 있는 4개의 건물을 분할해서 각각 맞는 것으로 흘려준다. 바깥의 R2는 인터넷이라고 생각하면 된다.
- 경희대 안에서는 다시 나누어져서 /26으로 건물 4개를 나누는 주소 필드로 사용되지만 경희대 밖에서는 저걸 합쳐서 퉁칠 수 있으니까 굳이 26비트를 보지 않고 24비트만 보고 R1에게 준다.
- 추가된 정보는 R1의 테이블
- 4개 중에 하나를 떼어내서 경희대 바깥으로 내보낸다면?
- R1 밑에 있었던 organization 4를 R2로 이동시킨 것
- R2를 따라서 위로 올라가면 address aggregation을 했었던 140.24.7.0/24가 그대로 있음 근데 추가된 내용이 있다. 140.24.7.192/26. 즉, R1에 있었던 조직 4가 R2 밑으로 갔고 R2 밑으로 간 조직 4의 네트워크 주소가 R2에는 원래 없었는데 들어감 address aggregation 된 거 위에.
- 4개짜리가 3개로 되면서 하나가 나왔다고 해서 address aggregation을 포기하지 않음 단, 튀어나온 조직 4에 대한 것을 address aggregation 된 거 위에 올렸다. 이렇게 라우터에서 네트워크 주소에 대한 라우팅 테이블은 위에서 아래로 찾아간다. 혹은 longest matching(긴 것 중심)으로 따라서 이 경우에는 길고 혹은 위에 있는 조직 4가 R1 보다 먼저 잡힌다.
- 이러한 경우에 R1을 address aggregation 한 것이 풀리지 않고 R2에서 조직 4에 대한 것을 미리 내보내기 때문에 address aggregation 되어있는 저 3개는 그대로 140.24.7.0/24로도 처리가 된다.
- 오른쪽 끝을 인터넷이라고 한다면 Regional ISP라고 KT 입장에서 최초로 인터넷에 입장하는 지점. 그 지점으로 KT로 보내는 것은 다 모이는 것. 거기서 찢어짐. 네트워크는 퍼져있다가 모두 한 지점에서 보이게 된다.
Label Switching in Virtual Circuit
- 라우터 기반의 방식에서는 테이블을 위에서부터 아래로 빠르게 서치 하는 게 가장 일반적이다.
- 목적지 주소가 X로 되어있으면 이 장비는 위에서부터 아래로 X를 찾아내려 간다.
- NF라고 되어있는 게 네트워크 주소가 X에 매치되지 않는다는 뜻, F가 나오면 그곳으로 내보낸다.
- 결국 데이터그램 방식은 패킷마다 위에서부터 아래로 주소 테이블을 비교해야 하니 부하가 많음 하지만 좋은 점도 있다. 연경 설정 및 해제과정은 안 했다.
- 라벨은 테이블에서 서치를 하지 않는다. 대부분의 virtual circuit 방식에서 목적지를 스위치가 찾는 virtual circuit switch가 목적지를 찾는 방식은 이 라벨을 인덱스로 사용한다. 키값으로 바로 찾음 해시 테이블
IP Protocol
- 네트워크 계층으로 현재 인터넷을 지탱하고 있는 소프트웨어
- 루프를 무한히 돌거나 너무 멀리 가는 것을 막기 위해서 time-to-live에 숫자를 적어주면 라우터 같은 장치 하나를 통과할 때마다 1씩 줄어듦 그래서 0이 되는 순간 그 장치는 0으로 변함
- 헤더의 프로토콜 필드 TCP인 경우 06, UDP 경우 17 되니 IP 패킷을 보면 4 계층을 무엇으로 사용하는지 알 수 있다.
Fragmentation
- IP 데이터그램은 다양한 네트워크를 통해 이동하며, 각 라우터는 받은 프레임에서 데이터그램을 분리하고 처리한 후 다른 프레임에 다시 캡슐화한다.
- 받은 프레임의 형식과 크기는 그 프레임이 지나온 물리 네트워크의 프로토콜에 따라 다르며, 보낼 프레임의 형식과 크기도 마찬가지로 다음으로 지날 물리 네트워크의 프로토콜에 따라 달라진다.
- 예를 들어, 라우터가 LAN과 WAN을 연결하는 경우, LAN 형식의 프레임을 받고 WAN 형식의 프레임을 보낸다.
- 2 계층에서 받을 수 있는 최대 사이즈를 MTU라고 한다. 저거를 넘어가면 쪼개서 보내야 함
- 데이터의 첫 번째부터 4천 번째까지
- 처음에는 4000 byte가 들어가 있는 IP frame 하나를 만들어서 보냈는데 이게 3개로 찢어지는 것 이게 fragmentation 콘셉트
- 쪼개지는 게 data payload라고 한다면 앞쪽의 offset 필드는 어떻게 계산하냐면 본인이 전달하는 메시지가 있는데 그거의 최초에서 시작할 때의 첫 번째 바이트를 0으로 환산을 하고 8로 나눈 것
- 찢어진 두 번째 IP 프레임의 offset은 175가 되는 것
- IP 프레임은 쪼개질 수 있다.
- 오리지널에서 프레임이 만들어져서 나감
- 오리지널의 3 계층에서 4000byte짜리를 하나의 IP프레임으로 만들었는데 그 안에서 이미 3개로 쪼개짐. 장치 안에서 IP 프레임 하나가 2 계층을 통과하면서 3개로 찢어지는 일도 일어나긴 함.
- 가다가 F2가 다시 둘로 쪼개지는 것도 가능
- 최종적으로 맨 왼쪽에 하나만 있었던 것은 F1, F2.1, F2.2, F3으로 나누어짐
- 위쪽의 네트워크 그림을 봤을 때 이 각각의 메시지들은 전후관계가 없음 모두 대등 관계로 각각 독립적으로 가게 된다.
Security of IPv4 Datagrams
- IPv4 프로토콜은 인터넷 사용자들이 서로를 신뢰하던 초기에 시작되어, 보안 기능이 포함되어 있지 않다.
- 현재 인터넷은 더 이상 안전하지 않으며, IP 프로토콜과 관련된 주요 보안 문제로는 패킷 스니핑, 패킷 수정, IP 스푸닝이 있다.
- 이러한 보안 문제들은 오늘날 널리 사용되는 인터넷의 보안 취약점으로 인식되고 있다.
- IPv4는 오류 검출이나 수정 기능이 없다. IP프로토콜은 호스트와 관리 쿼리를 위한 메커니즘도 부족. 두 결점을 보완하기 위해 ICMPv4가 설계됨
ICMPv4
- IP 프로토콜이 제대로 동작하는지 관찰하고 관리하기 위한 프로토콜
- ICMP 메시지는 오류 검출 메시지와 쿼리 메시지 두 가지 주요 범주로 나뉨
- 오류 검출 메시지는 라우터나 호스트가 IP 패킷을 처리할 때 발생할 수 있는 문제를 보고함
- 쿼리 메시지는 짝을 이루어 사용, 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보를 얻는데 도움을 준다.
- ICMP의 가장 기본이 되는 동작 매우 단순함. 맨 위에 있는 것처럼 IP를 하나 받으면 그러면 그 IP 메시지의 헤더까지 포함을 해서 그냥 ICMP에 집어넣음. 즉, 내가 IP 패킷을 하나 받으면 통째로 ICMP 프로토콜에 줘서 ICMP가 헤더만 붙이게 됨. 그리고 목적지 쪽으로 다시 돌려준다. 받은 메시지에다가 본인이 헤더 조금 더 붙인 다음에 상대방에게 돌려주는 일종의 루프백 동작.
Debugging using ICMP
- 네트워크가 살았는지 죽었는지 확인 가능
- ICMP는 밑에 깔려있기 때문에 전면에 드러나지 않음
- ping, traceroute 두 개를 사용해서 확인할 수 있음 이 두 프로그램이 ICMP를 활용해서 만든 application
- 윈도우즈, 리눅스, 유닉스 다 있음. 사용법도 동일
- 클라이언트 서버 사이에 뭔갈 할 때 핑을 통해 서버가 살았는지 중간과정에 문제가 없는지 알 수 있고 성능과 지연시간도 알 수 있다.
- 맨 왼쪽이 내 컴퓨터고 맨 오른쪽이 상대방 컴퓨터. 중간에 3개의 장치들을 지나간다고 가정한 그림
- 1번에서 메시지를 보낸다. TTL 1로 해서. 내가 원하는 지점이 맨 오른쪽이면 TTL 1 해서 보내면 바로 앞에 있는 애가 응답을 준다. 그럼 TTL2로 해서 보내면 첫 번째 통과하고 1 줄어들고 두 번째 도착했을 때 1 빼니까 0이니까 걔가 응답줌 그리고 TTL 3으로 하면 세 번째 장비까지 갔다가 돌아옴. 즉, 최종적으로 도착해야 할 애가 끝에 있고 걔까지 가는 길을 그냥 쭉 통과한 다음에 끝까지 갔다가 돌아오는 게 ping이라면 traceroute는 중간을 거쳐야 하는 애들을 하나하나 다 ping 해본다. 중간에 어떤 장치들이 있는지 알 수 있다.
Mobile IP
- 지역과 상관없는 가상의 IP를 준다. 그래서 IP가 지역에 상관없기 때문에 노트북에 Mobile IP를 집어넣고 들고 다니면 그 Mobile IP는 바뀌지 않는다. 단, 휴대폰을 들고 갔을 때의 네트워크가 알아서 전화를 연결해줘야 하듯이 사람이 봤을 땐 Mobile IP가 보여서 안 바뀌지만 밑에서는 careofaddress라고 네트워크 정보는 사실 지역 정보니까 사람은 Mobile IP만 보고 내 IP가 안 바뀌었다고 할 수 있으나 밑에서 보면 오리의 발처럼 끊임없이 위치정보에 해당하는 IP address를 준다. 따라서 사람이 쓰긴 편함 Mobile IP 번호만 알고 있고 그러면 통신가능 밑에서 네트워크 장치들이 열심히 휴대폰 마냥 사람이 들어왔네 Mobile IP를 쓰네 임시 IP번호를 이렇게 줘야지 해서 Mobile IP를 사용할 수 있게 해 준다.
- 이런 것을 필요로 하는 건 주로 회사다. 그 사람의 IP주소가 지역에 따라 자꾸 바뀌면 추적이 안된다. 바뀌지 않는 IP주소를 갖고 있다면 회사 안이나 밖이나 추적가능하고 보안성 서비스를 지원하는 것이 가능해진다.
'Computer Science > 컴퓨터 네크워크' 카테고리의 다른 글
[컴퓨터 네트워크] 5-1장 Network Layer (0) | 2024.04.29 |
---|---|
[컴퓨터 네트워크] 4장 MAC/DLC (0) | 2024.04.15 |
[컴퓨터 네트워크] 3장 DLC Layer (0) | 2024.04.08 |
[컴퓨터 네트워크] 2장 MAC Layer (0) | 2024.03.25 |
[컴퓨터 네트워크] 1장 Introduction (1) | 2024.03.23 |