학교 전공/컴퓨터 네트워크
중간고사 네트워크 네트워크 계층의 목적입니다 🤞
응가1414
2023. 4. 30. 16:14
기타
- 패킷(packet, 문화어: 파케트, 소포)은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록
7장
7-1-1 네트워크 계층의 목적
protocol: 절차를 포함한 통신 규약
Laver(계층): postal mail
Hierarchy: 계층화
protocol layering: 통신 시스템은 프로토콜들로 계층화 되어 있는 구조, 프로토콜들이 모여있는 구조는 통신 시스템이다.
Services: 아래 계층이 상위 계층에게 전달한다.
- 네트워크 계층의 정의
- 소스부터 목적지까지 잘 보내는 것
- 상위 계층에 서비스 잘 제공
- 하위 계층에 서비스 잘 받기
- 데이터 덩어리를 소스부터 목적지 까지 잘보내는것
- 라우터들을 거치고, 라우터들이 적절하게 라우팅 되어야한다.
- 네트워크층의 한 가지 의무는 근원지로부터 목적지까지 변경이나 활용 없이 페이로드를 운반하는 것
7-1 SERVICES 서비스 관점 7가지 정의
7-1-1 Packetizing
- 보호하는 것 캡슐화
- 패킷을 캡슐화 하는데 소스에 네트워크 계층의 정보를 캡슐화 한다.
- 패킷화: 패킷을 만드는 일
- 캡슐화 == 패킷화
- network layer는 사용하거나 변경하지 않고 payload을 잘보내는 방법
- transport에서 받은 payload을 잘 패킹해서 목적지에 보내는 것이다.
- network 계층에서 header와 payload을 모아서 패킷화
- header를 붙이는 이유는 중간에 있는 라우터가 header의 ip주소를 이용해서 목적지까지 가기 위함
7.1.2 Routing 경로설정
- route는 route을 하는 것
- Routing: 가장 좋은 경로를 찾는 것
- Routing protocol
- 가장 좋은 경로을 찾는 알고리즘
- 가장 좋은 길이 무엇인가에 대한 정리
- 어떤길이 좋은 길인가 에 대한 정리
- 좋은 길을 찾아 주는 알고리즘, 규칙과 절차 또한 라우팅 프로토콜이다.
- Forwarding
- 패키지를 그방향으로 보낸다. 라우팅을 찾은 경로로 그 순방향으로 데이터를 보내는 것
- 들어온 패킷이 좋은 경로로 데이터가 좋은 경로로 나갈수 있도록 forwarding하는 것
그림의 설명
- 그림은 라우터 R1이 router table을 가지고있다
- B : Data 다 들어 오면
- router table에의해 B의 IP에 맞는 Output의 위치를 알자
- output interface가 2번 출구로 보내는 것이 좋다.
7.1.2.1 Network layer at the Source, Router, and Destination
네트워크 계층의 송신자, 중간노드, 종단 수신기의 각각의 네트워크 계층 역할
- Network Layer at the source (어떤을일 해야하는지) (보내는 놈의 네트워크 계층의 역활)
- Creating a packet 상위 계층에서오는 데이터로 부터
- Logical addresss of the source and destination in the header
- IP 주소, 누구한테 데이터를 보내는 지 결정한다.
- 소스는 라우팅 테이블을 보고 내가 만드는 패킷을 누구한테 보내야 되는지에 대한 정보를 찾아야하는데 그것이 물리적인 주소를 찾는 것이다.
- 받을 놈의 하드웨어 주소를 정리해서 그다음 노드에게 준다.
- 상위 계층의 데이터가 너무 크면 네트워크 계층이 잘라서 보낼수있다.
- Network Layer at the destination (수신단의 네트워크 계층)
- Responsible for address verification
- 인증(확인한다), IP주소 패캣을 받았는데 진짜인지, 아닌지 확인 하는 것
- Reassemble the fragments and delivers the reassembled
- 만약에 중간 보내는 라우터들이 fragmentation을 하였을때 쪼개는 놈들을 다시 조립해야한다.
- Responsible for address verification
- NetWork Layer at the switch or router (중간 노드의 네트워크 계층의 router)
- 패킷의 라우팅을 책임지면 된다.
7.1.2.2 Network layer at the Source and Destination 사진
- 네모박스 안에 있는 그림은 송신기에 네트워크 계층이다.
- 네트워크 계층은 상위 계층에게 데이터를 받았고.
- 네트워크 계층은 초록색(패캣) 박스를 받았다.
- 회색 박스 와 초록색 박스는 패킷이라고 하며
- 회색 박스는 IP주소 등 header이다.
- 빨강색 박스는 Datalink에게 보내는 물리적 주소가 담겨있는 정보를 준다.
- 회색 박스 와 초록색 박스는 패킷이라고 하며
- 받은 패킷의 venification(공개)를 하면
- 회색 박스를 통해 IP주소를 확인하고,
- 헤더를 뜯어보고, 목적지가 맞으면 초록색을 잘처리 해서
- 상위 계층에 잘 서비스 한다.
7.1.2.3 Network layer at the Router
- 라우터는 패킷을 하나 받고
- 라우팅 테이블을 확인하고
- 패킷을 뜯어 보고 목적지가 어디 인지 확인한다.
- 하위 계층에게 이 패킷의 목적지를 알려준다.
7.1.3 Error Control 오류계층
- 네트워크 계층은 오류제어 안한다
- 비효율적이라.
- 필요에 따라 네트워크 계층이 보내는 데이터를 자를수있다.
- 네트워크 계층은 오류제어를 하지 않는다.
- 인터넷 기술자들이 Fragmentation이 가능하도록 하였다.
- 송신기의 데이터가 크다면 중간에 거쳐가는 라우터들이 성능상 문제로 데이터를 쪼갰다.
- 이놈들로 오류제어를 한다면 이것이 효율적으로 만들 수 있는 방법이 없다.
- 네트워크의 오류제어는 효율적이지 않다.
- DataLinke 단계에서 오류제어를 하니 큰문제는 없다.
7.1.4 Flow Control 흐름제어
- 수신자가 받는 데이터가 압도 되지 않기 위해 제어하는 것
- 흐름제어는 sender가 한다.
- 문제는 항상 받는 사람에 의해 일어난다.
- 받는 사람의 용량/능력에 의해 정해진다.
- receiver 는 feedback이 필요하다.
- 처음과 종단의 라우터들의 협의에 의해 일어난다.
7.1.5 Congestion Control 혼잡 제어
- 처리 할수 있는 양만 제어
- 데이터에 흘러가는 양보다 처리 할수 있는 양 제어.
- 혼잡: 네트워크와 라우터의 개념
- 흐름: 종단의 종단의 결과
7.1.6 Quality of Service (서비스의 품질 기준)
- 서비스의 품질은 서비스의 종류에 따라 다르게 고려가 된다.
- 이것들은 네트워크 계층에서 고려하지 않는다.
- 문자
- 오래걸리는 것은 문제 XX
- 하지만 문자가 이상하게 보내지는 것은 문제가 생긴다.
- 텍스트와 보고서를 보낼때의 서비스 품질은 정확하게 데이터가 가는 것이 중요하다.
- 비디오, 음성
- 데이터가 상대방이 받을때 음성이 이상하거나 약간의 오류는 이해하는 데 괜찮지만,
- 지연이 생기는 것이 문제이다.
7.1.7 Security
- 처음에는 보안 생각 하지않았다
- sender <---> recieve가 좁았기 때문에
- 악의적인 router들이 모든 데이터들을 조작한다.
- 그래서 네트워크 계층들도 보안이 필요
- connectionless service 에서 connection-oriented 서비스로 변경
- IPSec as additional virtual layer
- 가상의 계층 부가적 생성
- IPSec (IP 보안) 새로운 프로토콜
- 보안을 위해 새로운 프로토콜
- IPSec as additional virtual layer
7.2 PACKET SWITCHING
- 라우터는 스위치다.
- input port 와 output port로 연결해주는 스위치
- 소프트적으로 판단하는 것
- 패킷 스위칭은 들어온 패캣을 적절한 곳으로 빠져나갈수 있도록 하는 것
- 패킹 스위치에는 2가지 기법이 있다.
- Datagram Approach
- Datagram: 패캣이라는 데이터 덩어리
- Virtual-Cricuit Approach
- 가상 회선을 이용해서 데이터를 보내는 방법
- Datagram Approach
7.2.1 Datagram Approach
- Datagram: 패캣이라는 데이터 덩어리
- connectionless 서비스를 만들었다,
- 비연결형 서비스라는 것은 패킷과 패캣 사이에 독립성을 늘렸다.
- 관계를 고려하지 않았다.
- 트랜스 포트와 네트워크 계층은 연속적으로 연결이 되었지만
- 패킷들이 고유한 상관관계가 있더라도 독립적으로 처리한다.
- 패캣과 패캣들이 목적지 까지 가는데 동일한 경로가 아닌 다른 경로로 갈수 있다.
7.2.1.1 A connectionless packet-switched network
- 1, 2, 3, 4 번의 패캣이 들어가면
- 독자적으로 처리를 하여
- 라우터가 연관성이 없다고 판단
- 1 3 4 2 번으로 도착을 한다.
- transport 계층이 1234번의 순서를 원한다면 원하는 순서로 재배열 해야한다.
connectionless
- 장점: 단순하다.
- 패캣이 생기면 보내고, 각 라우터들이 연결을 해준다.
- 단점: 순서가 뒤집어 지면,
- reordering 해야한다.
7.2.2 Virtual-Circuit Approach ( connection-oriented ) 연결 관계성
오류제어 흐름 제어를 위해서
- connection-oriented : 패캣들이 연관성이 있다.
- Virtual-circuit approach : 가상 회선 접근
- relationship: 하나의 메세지에 속한 모든 패캣들은 다 관련이 있다고 생각한다.
- 오류제어 흐름제어를 위해서
- virtual-circuit을 사용한다. -> 선이 연결되어있다.
- 가상의 회선이 있는 것처럼 연결되어 있다
- 메세지가 속한 모든 페캣들은 모두 관계가 있다.
- virtual-circuit을 사용한다. -> 선이 연결되어있다.
- 미리 선을 만들어 주는 과정이 필요하다
- connection setup이라고 한다.
- 연결 과정을 만들어 주는 과정이 필요하다.
- flow: 흐름에 대한 label을 붙여야한다.
- 장점: 경로가 이미 정해져있다.
7.2.2.1 virtual-circuit packet-switched network - 그림
- 파란색 실선이 목적지 까지 연결이 필요하다.
- 인터넷에는 기차길처럼 물리적인 것인 아니다.
- virtual : 가상의 논리적으로 마치 물리적인 것처럼 만들어야 한다.
7.2.2.2 Forwarding process in a router when used in a virtual circuit network - 그림
- L1 이라고 하면
- Virtual circuit identity : L1 이다
- IP 주소또한 있지만
- IP주소로 라우팅하는 것이 아니라 L1가상 회선으로 라우팅을 해준다.
7.2.2.3 Sending request packet in a virtual-circuit network - Request
- A가 B와 버추얼 서킷으로 데이터를 보내고 싶으면 만들어 주세요 라고 하는 Request 메세지를 보낸다.
- 고전된 길을 만들어 주세요" 라는 요청을 R1에게 보낸다.
- R1이 임의 적으로 R3로 길을 정하고
- 레이블을 기록한다.
- 하나식 가상의 길을 만들어라.
7.2.2.4 Sending request packet in a virtual-circuit network - respons
- 목적지에 request를 보내면
- response를 받는다.
- 목적지까지 다시 데이터를 돌아가도록 만든다
- 각각의 라우터는 버추얼 서킷의 길을 확립하게 된다.
7.2.2.5 Flow of one packet in an established virtual circuit - 연결 완료
- A가 하는 역할은 맨앞에 보내고 싶은 데이터를 14번 식별자로 보낸다.
7.3 Performance 성능
- 네트워크 계층은 완벽하다 / 완벽하지 않다
- 내가 보낸 데이터를 수신자가 잘받는 환경
- 성능척도를 이용해서 판단을 해야한다.
- 척도를 이용해 지연, 처리율, 패킷손실
- 혼잡제어를 하면 패캣로스, 딜레이를 개선할수있다.
7.3.1 Delay 지연
- 4가지 지연 전송지연, 전파지연, 처리지연, 대기지연
- 4가지 지연이 합쳐져야
- serder가 recieve에게 데이터를 보내는데 필요한 시간이 정의
7.3.1.1 Transmission Delay : 전송 지연
- message 비트들의 집합 : 100개 비트
- 전송지연 Delay(tr) : 위의 message 비트들의 집합 1부터 100까지 보내는데 걸리는 시간
- 전송지연 Delay(tr)
- 전송 지연 = 비트들의 갯수 / 전송률로 나누어 주면
- 비트를 하나씩 차례로 보낼필요가 있다.
7.3.1.2 Propagation Delay : 전파 지연
- 전파지연
- point A 에서 Point B 까지 물리적으로 (전송매체를) 통해서 하나의 비트가 전파되는데 걸리는 시간
- 전기는 (진공에서) 빛의 속도와 비슷하다.
- 전파 지연 = 거리 / 속도
7.3.1.3 Processing Delay 처리 지연
- 처리 지연
- 커퓨터 통신을 지원하는 디바이스가 통신을 하기 위해 처리 해주는데 걸리는 시간
- 라우터가 하나의 패캣을 받았을 때
- 헤더를 뜯어 보고
- 헤더의 목적지 주소를 보고 라우팅 테이블을 검색 하는데 시간이 걸린다.
- (매우 짧지만 연산을 처리하는 시간이 있다)
7.3.1.4 Queuing Delay 대기 지연
- 대기 지연
- 라우터에서 보통 일어난다.
- 라우터는 여러가지의 연결이 연결되어 있는데
- 라우터의 여러가지 연결에 들어어는 데이터를 처리하는 데 처리 시간이 걸린다
- 라우터가 처리하는 시간보다 더 많은 패킷이 들어오면
- 버퍼, 큐라고 하는 들어온 순서대로 저장하고
- 하나식 처리하는 과정이 필요하다
- 혼잡때문에 버퍼의 데이터가 들어가고
- 이 데디터가 자기 서비스를 받는데 걸리는 시간을
- 지연시간이라고 한다.
- 이 데디터가 자기 서비스를 받는데 걸리는 시간을
- 혼잡때문에 버퍼의 데이터가 들어가고
- 하나식 처리하는 과정이 필요하다
- 버퍼, 큐라고 하는 들어온 순서대로 저장하고
- 라우터가 처리하는 시간보다 더 많은 패킷이 들어오면
7.3.1.5 Total Delay 전체 지연
- 라우터가 n개인 경우 링크는 (n+1)개이다. - n개의 라우터 갯수 + 1(수신단)
- n개의 라우터 갯수 * (대기지연)
7.3.2 Throughput 처리률
- 처리률: 1초동안 어떤 포인터에서 그포인터를 지나가는 갯수
- 실제로 들어가는 양으로 정의
- 처리율은 Cavacity를 넘어 갈수 없다.
- 처리율은 가장 보낼수 있는 가장 낮은 놈에게 의존을 한다.
- 처리할 수 있는 양은 100kbps에 의존해야한다.
- 200kbps으로 데이터가 들어가도,
- R1 - R2의 100kbps만 처리하니
- 전체 처리율은 100kbps이다.
- 문제 해결 방법
- Backbone : 라우터와 라우터 사이를 빽본으로 연결 매우 높은 전송율을 높이는 것
- (큰통의 수도관을 만들다.)
7.3.3 Packet Loss 패킷의 손실
-
- 버퍼: 쌓아서 처리 -> 만약 한계를 만나면
- 라우터가 처리 할 수있는 속도보다 더 많이 들어오면
- 버퍼가 가득차고 데이터가 들어오면
- 버려지는 것 -> 패캣 로스
- 하지만 혼잡이 생기니 버퍼가 쌓이고
- 혼잡제어를 해야한다
- 들어온 데이터를 줄여야 한다.
- 라우터 에서의 로스 처리
- 여기서의 로스는 처리를 못 하는 것은 버린다.
- 패킷을 손실은 하나이다
- 라우터가 있는데 라우터의 데이터가 많이 들어오면
- 버퍼를 각각두고 버터의 데이터를 쌓아두고 처리를 하는데 불행하게 버퍼가 가득찬다.
- 이 버퍼가 허용하는 범위 까지 계속 들어온것들이 버퍼보다 크다면
- 패캣 손실이 생기는 환경은
- 라우터에서 혼잡이 생기기 때문에 버퍼가 차는 것이다.
- 버퍼의 오버플로우 때문에 패캣 로스가 생긴다.
- 패캣 로스를 막는 방법은 혼잡제어를 해주는 방법이다.
- 혼잡제어를 하는 방법은 들어온 데이터를 줄인다.
7.3.4 Congestion Control 혼잡제어
- 명시적으로 혼잡제어를 하지 않는다
- transport layer - network layer가 계급제
- Congestion 혼잡은 처리율, 지연에 영향을 미친다.
- 만약 보낸것이 혼잡 때문에 패캣로스 발생
- 그러면 sender는 다시보내야 된다
- 그래서 처리율, 지연시간 높다.
- 그러면 sender는 다시보내야 된다
- 네트워크 계층에서 명시적은 혼잡제어를 하지 않는다.
- transport 계층에서 네트워크 계층에서 혼잡제어를 할수 있도록 도와준다.
- 혼잡은 처리율과, 지연에 영향을 준다.
- 데이터가 혼잡때문에 패캣로스가 생겼으면 sender는 다시 보내야 한다.
- 그러면 다시 가다가 없어지고, 다시보내고
- 지연시간와, 처리율의 관계도 늦어진다.
7.3.4.1 Congestion Control 혼잡 제어의 방법
- 혼잡제어는 네트워크 계층도 한다.
- 상위 계층 transport 계층이 우선적으로 한다.
- Open loop congestion control : before it happens
- 혼잡제어 생기기 전에 미리미리 해 조심을 해야 하는 경우
- Closed loop congestion control: after it happened
- Choke packet
- 딜레이 관점에서 용량에 접근할수록 무한으로 커진다.
- 처리율관점에서 처리를 증가하다가 capacity에 도착하면
- 재전송이나, 지연특성, 버퍼 오버플로워에 의해 패캣 로스 발견한다.
7.3.4.2 Backpressure method for alleviating congestion
- Backpressure
- 소스가 데이터를 보내면 패캣에 로스가 발생할꺼 같으면
- 이전 라우터에 빽프레셔 뒤에 압력을 준다.
- 소스까지 압력이 들어가서 보내는 속도를 줄인다.
- Choke packet
- 명시적인 메시지를 만들어서 소스한테 보내는 것
- 바로 직접적으로 소스한테 명령을 하는 것
- 목을 조이는 명령을 만들어서 소스에게 보낸다.
7장_IPv4
7.4 Internet Protocol Version 4
- IPV 4 와 6가 있다.
- 우리나라 66%, 전세계 33% 가 보급
- IPV 4 , IPV 6
7.4.1 IPv4 Addressing
- 라우팅이 주요목적 - 주소 (IPV4 address)
- 논리주소, 물리주소, 정해진 주소, 논리적으로 정해진 주소
- IP주소 - 우리가 쓰는 주소, 네트워크 계층이 쓰고있는 주소
- 각각의 디바이스의 연결이 네트워크의 개념이다.
- IPv4 address은 32-bit address 이다.
- IPv4 주소는 유일하고, 전세계적으로 통용이 된다.
- IP의 주요목적은 라우팅이다.
- 라우팅이랑 sender가 있고, 중간에 많은 라우터를 거쳐서 목적지 까지 가는 것
- 요 연결을 해 ip 프로토콜을 돌아가는 것
- IP주소를 사용한다 (논리주소) -> 네트워크 계층에서 사용하는 주소
- IP주소는 논리 주소이기에 특정한 디바이스의 식별자로 사용하는 것은 아니다.
- 연결이 네트워크의 개념이다
- IP 주소의 역활 : 인터넷 네트워크 계층의 IP 역할은 연결을 식별한다.
- 유일해야 되고, 전세계적으로 통용 인터넷의 호스트
- 종단, 중간 라우터들의 연결을 정의 하는 것
- IP주소는 연결에 관한 주소이다.
- 유일해야 되고, 전세계적으로 통용 인터넷의 호스트
- ICAN은 숫자(IP주소, 포트번호), name(도메인: 조선대를 나타내는 인식주소, 월래는 IP주소 대신 인간이 기억하기 편하게 도메인 이름 할당)
7.4.2 Address Space : 주소의 공간
- IPV4의 문제점: 주소의 고갈 -> address deplition
- 주소가 부족하다.
- IPV4 는 32bit address을 사용한다 -> 2^32 은 42억개을 사용한다.
- 주소를 아껴서 사용해보자
- long term solution: IPV6을 만들고 거기의 안정적인 버전이 생김
- short-term solution: 3가지가 있다.
- classless addressing 방법
- DHCP라고 하는 프로토콜 사용
- 네트워크 계층의 프로토콜이 아닌 앱플리케이션에 사용하는 프로토콜
- NAT 이라고 하는 기술을 사용한다.
7.4.3 Notation 표기법
- IP 주소를 쓰는 표기법은
- 2진수, 256진수, 16진수
- IP주소를 표현하는 표기법을 쓴다.
7.4.4 Three different notations in IPV4 addressing 3가지 IP4 표기법
7.5 Hierarchy in addressing 주소의 계층화
- 주소가 계층적으로 만들어 졌다.
- 32-bit IPV4 address 은 two parts로 나누어 져있다.
- first part 은 prefix
- 물리적인 (네트워크: 특정한 물리적인 지형의 위치를 나타내는 정보)
- 물리적으로 지역을 알려준다.
- second part of the address 은
- node를 알려주는 정보, 디바이스 6030을 알려준다.
- 조선대 안에 있는 수없이 많은 놈의 한개를 보여준다.
- prefix와 surfix의 간격은 변경이 가능하다.
- first part 은 prefix
- 특정한 네트워크를 출발해서 특정한 네트워크를 도달한다.
- 062 - 230 : 지역 물리적 (작은 형태의 영역을 지목)
- 6030 : 수없이 많은 전화기 중에 한대가 이번호이다.
7.6 Occupation of the address space in classful addressing 클래스 기반
- 클래스 기반으로 주로 나눈다
- 클래스 기반으로 주로 나눈다.
- FIX 시킨다.
- 하나의 덩어리가 아닌 3가지 클래스로 FIX를 시킨다.
- ABC, DE 클래스 기반 주소
- n = 8, n = 16, n = 24 기반의 클래스 3개
단점
- 컴퓨터 10개만 사용이 가능하지만
- 할당받는 주소는 256개이다.
- 최소가 256개이니 손해이다.
그림
- class A의 첫비트는 0으로 판단한다.
- Prefix : (판단으로 1비트 사용) 7네트워크를 정의 한다 8-1 = 7비트
- 대신 Surfix : 2^24개가 된다.
- Prefix : (판단으로 1비트 사용) 7네트워크를 정의 한다 8-1 = 7비트
- class B의 첫비트는 10 으로 시작
- prefix : 16bit - 2bit(인식) = 16 bit
- class C는 110으로 시작한다.
- prefix: 24bits - 3bit(인식) = 2^21 이
- surfix: 2^8 = 256개까지 서로 다른 컴퓨터를 class C로 구성
- Class D, E는 특정할수 있다.
- 단점
- ip주소의 낭비가 심하다
- 가장 작은 단위는 256이다
- 직원 5명에 컴퓨터 10대만 사용이 사능하지만
- 할당받은 주소는 256개이다
- 최소 256이니 낭비이다.
- 네트워크의 크기 id, sufix의 갯수 만큼만 정하고 나머니는 prefix로 사용한다.
- long-term solution
- IPV6로 가는 것
- short-term solution :
- classless addressing
- long-term solution
7.8 Slash notation (CIDR) "/N"
- CIDR: Classless InterDomain Routing -> 사이더 발음(cider)
- prefix의 값을 N으로 알수있다.
- /n을 사용해서 IP어드레스 안에 명시적으로 "/" 을 이용해 써주자.
- N은 prefix의 length이다.
- /n : CIDR 이다.
- ClassLess는 네트워크와 네트워크 간의 상호 동작할수 있도록 해주는 라우팅
- IP 예시 220.8.24.255/25
- network의 prefix는 25비트
- surfix는 32 - 25 = 7 bit이다.
- 2^7 은 128개 까지 IP주소를 가능하다
7.8.1 example
- 2진수 변경
- 127 보고하기
- 실전
7.8.2 maske를 이용한 example
7.8.3 example Classless addressing 확인
7.9 Network address = prefix
- The first address
- Forwarding table = rougting table
- Destination address
- Find network address
- IP주소, prefix
- prefix 만가지고, 라우팅 데이블을 만들었다.
7.4 Example
- ISP가 1000개의 address을 요청한다.
- surfix는 10 이다. log1024
- 2의 제곱인 1024의 주소만 할당해준다.
- prefix = 32 - surfix = 32 - 10 = 22
7.4.1 IPV4 주소지정: 서브네팅 (p20)
- 쪼개는 걸 -> 서브네팅이다.
- 1024개 IP을 받으면
- 관리부 512개
- 영업부 256개
- ... 64개 나눠서 관리한다.
7.5 Example - 1, 서브네팅
- 14.24.74.0/24 의 시작
- one subblock of 10 addresses
- one subblock of 60 addresses
- one subblock of 120 addresses
- surfix : 8비트 => 256개의 IP address 사용가능
- 3가지 조직에서 각각 10, 60, 120 개의 IP을 달라고 요구
- 정리
- 14.24.74.0/24 인 주소체계는 => surfix = 8bit
- 14.24.74.0/24 ~ 14.24.74.255/24 까지 주소 할당 가능
- subnet은 surfix가 작아지느 prefix의 값이 높아진다.
A : 14.24.74.0/25 ~ 14.24.74.127/25 필요 120 -> 실제 할당 128 이다
B : 14.24.74.128/26 ~ 14.24.74.191/26 필요 60 -> 실제 할당 64 이다
C : 14.24.74.192/28 ~ 14.24.74.207/28 필요 10 -> 실제 할당 16 이다. - A > B > C 로 갈수록 prefix의 값은 증가하고 surfix의 값은 감소한다.
7.4.2 IPV4의 main와 다른것 \ Four Related Protocols (Main and Auxiliary Protocols)
부수적인 프로토콜 돌아간다.
- IPV4 프로토콜
- Packetizing (패킷화)
- Forwarding (포워딩)
- Dlivery of a packet (패킷 전달)
- ICMPv4 (Internet Control Message Protocol Version 4)
- IPv4를 도와 네트워크층의 전송 중 발생할 수 있는 오류를 제어함
- 컨트롤 하기 위한 IP에는 없었던
- 컨트롤 하기 위한 메세지를 가진 프로토콜
- IGMP (Internet Group Management Protocol)
- IPV4의 멀티 캐스트를 도와줌
- ARP (Address Resolution Protocol)
- address 문제를 해결
- 네트워크층 주소와 링크 계층 주소를 메핑
- 네트워크 계층과 데이터계층이 있는데 네트워크 계층이 헤더가 붙은 데이터를 내려 보내면서 데이터 계층에 명령을 줘야하는데 이 데이터 패킷을 누구한테 보내기위한
mac 어드레스, H/W, 물리 주소에 대한 주소를 알려줘야한다. 이런 정보를 줘야하는데 - 지금 네트워크가 목적지 IP는 알지만 다음 홉의 거리에서의 Data Link 계층에 필요한 주소를 모른다면
ARP라고 하는 프로토콜이 동작하면서 보내기위한 다음홉의 Data Link 계층의 어드레스 , 물리주소가 무엇인지 찾아주는 역활이다. - Network 에서 목적지 주소 IP는 알지만
- 다음홉의 누구한테 Data link에 대한 address 모른다면
- Data link에 대한 address 찾아주는 것
- 다음홉의 누구한테 Data link에 대한 address 모른다면
7.4.3 Characteristics of IPv4
- Unreliable and connectionless
- 신뢰성이 없다 (보낸 데이터가 정확하게 다음노드에 받아졌는가 에 대한 신뢰성이 없다)
- 전달을 하기 위해서 Best하는 노력을 한다.
- 정확성에 관해서는 신경을 쓰지 않는다.
- 전달을 하기 위해서 Best하는 노력을 한다.
- 전달에만 최선을 다한다.
- Header에 관해서는 오류에 관한 판단을 하겠다.
- Best transmission : 심플하면서 보낸가 싶을때 보내지만 보장하지 않는다.
- IPV4 에서 만들어진 패캣을 데이터 그램이라고 한다.
7.4.4 Datagram Format - 데이터 그램 포멧 Header - datagram
- 데이터 그램의 포맷은
- IP에의해서 만들어진 패캣을 datagram이라고 한다.
- datagram은 가변의 길이를 갖는다.
- header와 payload이다.
- header는 20에서 60byte 이다.
- 가변이다. 헤더의 길이도 가변 header에는
- routing 과 delivery을 하기 위한 제어정보가 있다.
- 관습적으로 4 byte을 끊어서 보여준다.
7.13 IP datagram Header Format의 정리
7.13.1 IPV4 datagrma format - 윗 그림 상세 설명
- Version (VER) : protocol version
- Header Length (HLEN) :
- 20~60byte, 4바이트식 끈기
- HLEN 5
- Services: IETF의 기관에서 지정한 서비스 품질을 정의 하는 것
1. 딜레이를 최소화 2. 신뢰성 최대 3. 처리율 최대 4. 가격 최소화
- Total Length: 16bits가 있다 최대 65535byte의 헤더가 포함 - 2^16
- EG
- 네트워크 계층은 transport 계층과, 데이터 링크 계층이 편하게 일을 해야한다.
- 내가 만드는 데이터의 덩어리를 밑으로 보내야 하지만
- 데이터링크의 계층이일을 할수있는 Frame의 길이가 46~1500byte까지의 길이만 갖게 된다면
- 길이를 잘라서 보내줘야한다.
- 이렇게 하기 때문에 fragmentation 이필요하다
- 최소 20byte을 보낸다면 - padding을 사용해서 필요한 사이즈를 강제로 만들어 준다.
- 이렇게 하기 때문에 fragmentation 이필요하다
- Identification: used in fragmentation
- 인식, 신원, ID이다 (IPX 각각의 데이터 그램을 구분하기 위한 구분자)
- Flags: 파면에서 사용, fragmentation 에서 사용한다.
- Fragmentation offset: fragmentation에서 사용한다.
- Time to live
- 얼마나 오래 생활을 하는가
- number of hops 거처가는 라우터의 갯수 :
- 과거의 데이타로부터 목적지가 어리라면
- 과거의 목적지까지 가는 홉수가 최대 10개 라면
- Time to live는 10*2 정도로 셋팅한다.
- 데이터 그램이 라우터 방문을 할때 마다 '-1'을 해준다.
- 라이프타임 없으면 목적지를 못간 데이터들이 좀비처럼 떠다닌다.
7.4.2 데이터 그램 형식: 헤더 필드(3)
- 헤더 검사합(Header checksum) : 16 bits
- 헤더 검사합(Header checksum) : 16 bits
- 발신지 주소: 32 bits
- 목적지 주소 : 32bits
- 선택사항 : Used for network testing
- 패딩 :To fill to multiple of 32 bits long
- 상위 계층의 사용자 데이터 전달
- 8 비트 길이의 정수
- 데이터그램의 최대 길이(헤더 + 데이터)는 65535
7.14 protocol field에서 사용하는 다중화 및 역다중화
- TCP, UDP 애들이 데이터를 만들어서 network 계층에 보내진다.
- 상위 계층, TCMP, IGMP, OSPF 에서 받아온 정보을 이용해 Datagram을 만들다
- 목적지에 전달 가능해야한다.
- 상위 계층, TCMP, IGMP, OSPF 에서 받아온 정보을 이용해 Datagram을 만들다
- Datagram이 만들어 질때 마다
- 그때 만들어지는 대상이 되는 프로토콜들의 정보까 따로 정리가 된다.
- p40에서 프로토콜이라고 하는 필드가 정리 Header Format 정리
7.7 header의 길이 Example_1
- IPv4 packet has arriced
- 첫번째 비트가 01000010(2)
- 0100 : versin 4
- 0010 : 헤더의 길이 -> 2
- 헤더의 기본 길이는 HLEN 5이다.
- 그래서 성립이 안된다.
7.8 header의 길이 Example_2
- HLEN is 1000(2) : 8 이다
- 8 * 4 = 32byte
- 20byte는 기본 byte이고, 12byte 는 option이다.
- 8 * 4 = 32byte
7.9 Header , Example 7.9
- HLEN is 5
- 5 * 4byte = 20byte
- total length field 0028(16)
- 0010 1000 = 32 + 8 = 40byte
- 전체 40byte, header 20byte, packet 20byte
7.10 Example Header
packet의 데이터가 16진수로 도착을 했다
- 45000028000100000102...(16)
- 하나당 4비트 (2진수 4비트가 == 16진수 한자리수)
7.4.3 Header 옵션, Options에 관한 이야기
- a variable part 40byte 까지 사용가능
7.4.3.1 옵션의 이유
- testing and devugging 의 목적
- record rout option:
- 최대 9개 라우터 정보를 기록한다. 수신자는 어떤 라우터를 거쳐서 도착했는지 알수있다
- 루트옵션을 세팅해서 보내면
- 중간에 거처가는 라우터에 IP주소를
- 옵션 필드에 기록
- 중간에 거처가는 라우터에 IP주소를
- source route option:
- 우리가 지금까지의 데이터 그램이 보내는 경우는 경로 설정에 대해서 생각하지 않지만
- Strict, loose 옵션을 이용해서 보내는 놈을 미리 결정가능하다.
- Strict source : 무조건 결정된 경로를 따르는
- Loose source : 거쳐가는 router을 꼭 갈필요없다.
- Timestamp option: 시간 정보를 주고 받기위한 옵션
7.10 Solution to Example 4.5 서브네팅 그림 그룹화
surfix 의 영역
prefix 의 영역
7.11 Example of address aggregation 묶을 수있다.
- 라우터의 가짓수를 줄일수 있으며,
- 묶어서 외부에서 보면 한개처럼 보인다.
- IP 순차적 할당
- 작은 그룹은 다시묶으면 큰그룹으로 보인다.
- 연산에 필요한 연산의 가짓수를 줄일 수 있다.
- 큰덩어리로 라우팅 가능하다.
- aggregation 잘라진 작은 그룹은 큰그룹으로 보인다.
- 합치는 이유는 각각의 하나하나를 4개를 한개처럼 보이게 한다.
7.12 DHCP
- 다이나믹하게 자동적으로 호스트(유저)에게 IP주소를 만들어주는 것
- IP가 대상 IP주소가 논리 주소고 연결
- 상호관의 연결시켜주는 주체가 되고
- 행위의 수단이 IP가 없으면 인터넷 연결이 안된다
- DHCP는 앱플리-케이션 계층의 프로토콜이다.
- 상호관의 연결시켜주는 주체가 되고
- 컴퓨터의 IP주소가 셋팅이 되어있지 않으면 처음에는 network계층이 안된다.
- 그러면 IP주소를 찾기 위해서 DHCP가 IP주소를 만들어준다.
- DHCP는 IP할당 방법
- 고정 IP 할당 - 24시간 (학교 컴퓨터, 회사 컴퓨터)
- 자동 IP 할당 - 집에 있는 컴퓨터 잠깐 잠깐 컴퓨터를 쓰면 시간이 짧다
- 컴퓨터를 켰을때 IP를 할당해주는 경우
- 제일먼저 DHCP가 돌아가면서
- DHCP가 주변에 있는 DHCP서버 한테 IP주소를 요청한다
- DHCP라는 서버에 임시로 IP주소를 할당 응답
- DHCP 서버가 DHCP가 요청하는 IP주소를 할당한다.
*DHCP *의 그림
- DHCP가 주변에 요청을 뿌린다.
- 내가 누군지 모르는 상태
- 255.255.255.255 : 특별한 목적 IP주소, 방송용 IP주소
- 내가 이주소로 메세지를 보내면 주변에 있는 친구들이 모든 메세지를 받는다.
- 너의 address는 이거다
- 나의 주소를 먼저 알려준다.
7.13 Fragmentation 분할, 파편
- 내가 보내는 프로토콜의 방식에 따라 분할의 방식이 달라진다
- 내가 보내는 데이터 그램이 거처가야되는 물리적인 네트 워크에 따라서
- 네트워크가 사용하는 프로토콜에 의존하다.
- 내가 보내는 데이터 그램이 거쳐가야되는 물리적인 네트워크에 따라서
- 네트워크그가 사용하는 프로토콜에 의존한다.
7.13.1 Maximum Transfer Unit 최대 페이로드 사이즈 분할
- 다른 형태에 네트워크 구성에 대해 허용할 수 있는 최대 페이로드 사이즈가 정의
- 유선 VS 무선 : 다른 환경
- 유선 : 가이드 라인
- 무선 : 아무 것도 없는 (신호에 방해)
- 다른 형태의 프로토콜
- 유선 VS 무선 : 다른 환경
7.13.2 Maximum transfer unit (MTU) : fragment의 이유, 파편의 이유
- 데이타 링크 계층에 허용할 수 있는 최대 크기를 MTU라 정했다.
- 네트워크 계층이 상전, 상사
- 부하 직원이 원하는 대로 만들어 주는 것도 역할이다.
- 데이터 링크의 최대 능력에 맞게 쪼개서 보내야 한다.
- fragmentation 이 경우에 따라 필요하다
- 유선 데이터를 크게
- 무선에서 허용하는 크기로 자른다
- 이과정을 fragmentation
- 무선에서 허용하는 크기로 자른다
7.13.3복원이 될수 있도록 fragmentation 분할해야한다.
- Identification: 16bits
- 똑같은 16bit의 ID 필요하다
- 잘린 것이 복원이 가능해야한다.
- 잘린 놈들이 똑같은 16비트 ID을 가져야 한다
- ID는 인식 번호이다.
- 시퀀스
- datagram하나 만들때 마다 ID + 1 하게끔 만들어 났다.
- 시퀀스
- Flags: 3bits
- First bit: reserved 미래에 사용
- second bit: do not fragment bit
- 1 -> 자르면 안된다.
- Third bit: more fragment bit
- datagram이 만드는 Lenth는 가변이다. 만약에 잘렸는가 Fragmentation을 만들면
- 이것이 첫번째, 두번째, 마지막인지 구별할 수 있어야 한다.
- 만약 잘린놈이 M -> 1이면 : 내가 잘려있고, 내뒤에 잘린 파트가 있고, 마지막이 아니다!!
7.13.4 Fragmentation : offset 기준으로 부터 얼마 만큼 벗어났는가
- offset : 어떤걸들 절대적인 기준으로 부터 얼마 만큼 벗어나 있는가
- offset : 은 8byte을 나눈다
- fragmentation offset : 13bit
- offset : 정확치에서, 어떤 기준에서 얼마만큼 벗어나 있는가
- byte단위가 아닌 8byte의 단위로 표시하게 되어있다.
- offset에는 13bit 밖에 없다
- 그래서 8byte로 나누어서 다시 배열을 해야한다.
- offset에는 13bit 밖에 없다 그래서 크기를 재조정해야하는데
3비트 해당되는 만큼을 내가 표현할수 있는 능력이 사라진다. =>>>> 3비트는 2^3 byte 이다
그래서 8byte 단위로 total Lenth의 byte 순서 번호를 다시 변경 시켜준다
- offset에는 13bit 밖에 없다
Example 7.14 Fragmentation
- M bit value of 1 , offset : 0
1. 첫번째 fragment 2. fragment 화 되었다.
Example 7.15 Fragmentation
- offset :100 - ->>>> first byte = 100 * 8 byte = 800 byte
Example 7.16
- offset : 100 -> first 800 byte
- HLEN : 5 -> header 20byte
- total Length 100 -> 100byte
- payload 100 (3번) byte - 20 (2번) byte = 80byte
따라서 800 ~ 879byte 이다.
7.14 Security of IPv4 Datagrams 보안의 3가지
- Packet Sniffing (냄새를 맡다, 찾아내다)
- Intercept a packet and copy of it :
- 패캣을 가로채서 복사한다.
- Passive attack 수동적인 공격
- 조작하지 않고 가로채고 , copy 하는 것,
- 복사해서 다시보내고, 다시 해석
- Difficult to detect 찾아내기 어렵다
- 해결법 -> encryption 암호화
- Intercept a packet and copy of it :
- Packet Modification 패캣 조작
- 중간에 있는 놈이 가로채고, 조작해서 은행에 돈을 보낸다(제 3자의 돈이체)
- Intercept a packet and modify it
- 가로채고, 조작한다.
- contents change of the packet
- 내용변경 , 무결점 (서명)
- Detect using a data integrity mechanism
- 만약에 누가 정보를 조작하면 찾아 낼수 있다 -> 조작 검출이 쉽다.
- IP Spoofing 놀리다, 조롱하다
- Masquerade as somebody , create IP packet
- 다른사람으로 변장하고, IP packet을 만든다.
- 다른사람인것 처럼 보내서 인증을 하게 만들다
- result -> authentication 인증을 하게 만든다.
- Masquerade as somebody , create IP packet
7.14.1 IPSec 보안을 위한 계층
- IPSec은 보안을 위한 특별한 계층
- attack을 보호하기 위해
- Connection-oriented service 사용 (data의 앞뒤 관계가 있는)
- connectionless XX
- Packet encryption 암호
- Data integrity 무결성: 조작할때 찾는 기능
- Origin authentication 인증
7.15 checksum 의 예시
18.4.5 NAT : short term solution 중하나이다.
- Network Address Translation
- private addresses 을 사용하여 IP부족을 줄일수있다.
18.4.5.1 NAT
- IP주소가 왜 있어야 되는가?
- 연결을 을 위해서
- 디바이스 구분을 위해
- 그런데 외부에서 보았을때 구분되는 IP주소 일 필요가 있는가?
- 없다.
- 외부와 동일한 내부IP 주소를 사용해도된다.
- 라우터만이 다른 디바이스를 할당해주면 된다.
- 라우터만이 외부와 내부의 IP을 구별해주면 된다.
- 라우터 문을 나갈때 (외부)는 전셰계적으로 유니크하고 구분되는 IP주소가 되어야한다.
- NAT 기능을 수행 할수 있으면 IP을 찾아 갈수 있다.
18.4.5.2 NAT
- 네트워크는 모두 라우터가 관리한다.
- 라우터를 통해 집밖으로 났다가 들어온다.
- 이것을 라우터가 관리 출입문 역할을 하는 것
- 라우터가 NAT의 기능을 수행할 수 있으면 IP주소를 찾아갈 수 있다.
- IP주소가 왜있어야 되는가
- 연결을 위해
- 디바이스 구부을 위해
- 이런 사설 IP주소는 외부에서 구분이 가능한가
- 라우터면 분간이 가능하다
- 외부에 나갈때 IP주소는 전세계적으로 유니크하고 구분되는 IP주소가 되어야한다.
- 안에서 사용하는건 사설 아이피이다.
- 문밖으로 나갈때는 유니크한
- 인정을 받을 수 있는 IP로 변경해야한다.
- 문밖으로 나갈때는 유니크한
18.4.5.3 NAT 그림
*장점 *
- 밖에 IP중복을 신경안쓰고 사용가능
- 절약가능
*단점 *
- IP주소가 한개 밖에 없으면 (외부 중복이 안되는 IP가)
- Private 영역 IP가 한개만 나갈수 있다.
밖에는 GLOBAL 안에는 Private IP 이다.
7.4.2 Four Related Protocols
-