본 내용은 경희대학교 소프트웨어융합대학 이성원 교수님의 수업을 바탕으로 작성하였습니다.
Concept
- A, B, C가 있다면 A->C로 가기 위해서는 Network Layer가 필요하다.
- 줄이 여러 개 있으므로 패킷을 목적지로 전달하는 것이 Network Layer에서 가장 중요한 역할이다.
- TCP/IP 중 IP(inter networking protocol)라는 소프트웨어가 Network Layer에서 현재 가장 많이 사용되는 소프트웨어다.
- internet은 IP라는 소프트웨어를 네트워크 계층에서 사용하는 기술들의 집합체
- 네트워크 계층을 흔히 host to host communication이라고 이야기를 한다. 많은 host들이 있을 때 우리가 원하는 곳으로 잘 보내는 통신을 말함
- host는 컴퓨터
- router는 메시지를 받아서 제대로 된 곳으로 전달하는 네트워크 계층에서 가장 유명한 장비
Packetizing
- 네트워크 계층의 주요 역할 중 하나는 소스에서 네트워크 계층 패킷에 페이로드를 캡슐화하고 목적지에서 페이로드를 패킷에서 분리하는 것
- 이는 네트워크 계층이 소스에서 목적지까지 페이로드를 변경하거나 사용하지 않고 전달하는 운반 역할을 한다는 것을 의미
- 이 과정은 우체국이 소포를 보내는 사람으로부터 받는 사람에게 내용을 변경하거나 사용하지 않고 전달하는 서비스와 유사함
- 네트워크 계층의 다른 중요한 역할로는 서로 밀접하게 관련된 라우팅과 포워딩이 있다.
- 네트워크 장치들은 테이블이 있다.
- 네트워크 계층의 주요 역할은 어딘가로부터 패킷을 받아서 가야 할 곳으로 내보내는 것. 그것을 위한 정보가 필요함. 이런 정보들이 테이블에 있다.
Datagram and Virtual Circuit
- datagram이 주로 routing 방식 virtual circuit 이 주로 forwarding 방식으로 동작
- datagram: 주로 많이 사용하는 IP 네트워크 소프트웨어 인터넷, 주로 라우터들이 처리하는 메시지 방식
- virtual circuit : 주로 전화기, 교환기
Datagram Approach
- 인터넷이 시작될 때 네트워크 계층은 간단하게 디자인되어 연결 없는 서비스를 제공
- 이 프로토콜에서는 각 패킷을 독립적으로 처리하며, 패킷 간에는 서로 연관성이 없다.
- 이 방식에서는 메시지의 패킷들이 동일한 경로를 따라 목적지에 도달할 수도 있고 아닐 수도 있다. 각각 다른 경로로 갈 수도 있다.
- 연결 설정 및 해제 과정이 없어서 패킷마다 독립적으로 처리하는데 그 패킷을 보내기 위해서 내가 어떤 패킷을 받으면 어딘가로 보내는 장치들인 패킷 스위치를 통해서 네트워크를 만들었다.
- 비연결형 방식이며 패킷 스위치에 의해서 만들어진 네트워크이다.
- R1은 메시지 4개 받음 메시지들은 앞뒤 연관성이 없다 보니 각자 알아서 가게 된다. 목적지는 Receiver로 가지만 네트워크에서 어떤 일이 생길지는 모름. 받았을 때도 순서가 뒤집어져 있음(정상임)
- 이렇게 동작하는 소프트웨어가 IP 소프트웨어
- R4가 망가지면 다른 R들은 이 정보를 알 수 있음 그렇게 되면 R1은 R4를 본인이 보낼 후보지에서 제거함 그리고 어떻게든 R5를 경유에 해서 Receiver에게 도착함. 고장 나더라도 안정적으로 동작 가능
- 생존성을 최우선으로 하였다. 중앙집권화가 아닌 분산화
- 인터넷의 구동 원리
- 포워딩 테이블은 패킷을 받아서 패킷 안에 있는 정보만으로 어디로 내보낼지를 결정한다.
- 입력: 지금 받은 패킷의 정보, 출력: 어떤 포트로 내보낼지에 대한 정보
- destination address가 A면 1번으로 B면 2번으로... 이런 식으로 테이블이 만들어진다.
Virtual-Circuit Approach
- 연결 지향 서비스(가상 회로 접근 방식)에서는 한 메시지에 속하는 모든 패킷 간에 관계가 있다.
- 메시지의 모든 데이터그램을 보내기 전에 가상 연결을 설정하여 데이터그램의 경로를 정의해야 한다.
- 이 서비스 유형에서는 패킷이 소스와 목적지 주소뿐만 아니라, 패킷이 따라야 할 가상 경로를 정의하는 흐름 라벨과 가상 회로 식별자도 포함해야 한다.
- 보내는 메시지들은 똑같은 줄을 따라서 간다.
- 라벨을 보고 결정
- virtual-circuit<->datagram
- connection-oriented <-> connectionless
- 패킷을 받아서 내보낸다. packet-switched
- sender와 receiver 사이 파란색으로 파이프가 연결
- 메시지 1234는 순서대로 도착
- 파란색 파이프인 virtual circuit을 실제 데이터 1234가 전달되기 전에 connection-oriented 방식이니 connection setup을 하는 연결설정을 virtual에 의해서 만든다.
- virtual circuit을 지원하는 packet switch의 테이블
- 1번 줄을 통해서 Label이 L1이라고 되어있는 것이 온 것 내보낼 때는 2번 포트로 내보내면서 Label을 L2로 바꿈, 인커밍의 포트와 라벨을 본 후 아웃고잉의 포트와 라벨이 바로 계산되어서 나온다.
- B와 통신을 원하는 A는 본인의 네트워크에서 virtual circuit에 connection-oriented 동작을 시작. 그러면 A는 R1으로 1번 화살표처럼 정보를 전달함. 즉, 패킷을 최초로 전달하는데 기본적으로 연결 설정을 요청하는 메시지가 간다. A에서 R1에게 이 메시지가 전달되면 A는 목적지 주소로 B를 쓸 수 있지만 Label은 없음 그러면 이 라벨을 본인이 채운다. R1이 14라고 라벨을 부여한다. R1은 R3에게 A로부터 받은 연결요청 메시지를 전달한다. R1이 했던 것처럼 R3는 라벨을 본인이 66을 부여한다. R3는 마찬가지로 R4에게 연결요청을 하고 있는 R4는 1번 포트를 통해서 받고 라벨이 없으니 본인이 22를 부여한다. R4는 B에게 메시지를 전달하는데 R4는 이제 B가 자기 옆에 있는 것을 아니까 4번 포트를 통해서 B에게 연결요청을 전달한다.
- Outgoing의 Label은 받은 쪽에서 부여해야 함
- Outgoing의 Label을 채움
- B는 잘 받았음 B가 R4의 Outgoing 라벨을 채운다. 그럼 R3를 R4가 채워준다. R3가 R1 채워준다. A가 R1에게 보낼 때 사용할 라벨 14를 R1이 A에게 준다. 이렇게 되면 A와 B의 virtual circuit이 만들어진 것.
- 연결설정 과정을 마쳤으니 A가 B에게 데이터를 보낼 때 소스 주소는 본인 A가 되고 목적지 주소는 B.
- 그리고 A는 R1에게 보낼 때 저 줄에서 써야 될 라벨 14를 붙여서 보낸다. R1이 1번 포트로 라벨 14를 받으면 아웃고잉 포트 3번을 통해 라벨 66으로 내보낸다. 바로 받아서 라벨만 바꾸고 내보내니까 굉장히 시간이 빠르다.
- virtual circuit 방식의 장점은 복잡한 연결설정 과정을 마치고 나면 R1R3R4의 부하가 굉장히 줄어들기 때문에 전달하는 측면에서는 속도가 빨라짐
- datagram 방식과 다르게 virtual circuit 방식은 줄이 있고 그 줄을 통해서 순서대로 데이터를 보낸다.
Network performance
Concept
- 네트워크 계층을 사용하는 상위 계층 프로토콜은 이상적인 서비스를 기대하지만, 네트워크 계층은 완벽하지 않다.
- 네트워크의 성능은 지연, 처리량 및 패킷 손실 측면에서 측정되고 혼잡제어는 성능을 향상할 수 있는 문제다.
Delay
- 패킷은 출발지부터 목적지까지 여러 지연을 겪는다.
- 네트워크의 지연은 전송 지연, 전파 지연, 처리 지연, 큐잉 지연 4가지 유형이 있다.
Throughput
- data rate, 이 줄이 얼마만큼의 속도를 지원할 수 있는지
- 소스와 목적지 사이에서 최소 낼 수 있는 속도는 100 kbps
- 두 장치 사이 통신을 할 수 있는 전송속도가 throughput의 가장 흔한 예시
- 성능(throughput)을 올릴 때에는 bottleneck을 제거하는 것이 중요함
- 어느 구간이 정확하게 병목구간인지 알 수 없음
- 네트워크는 구름과 구름을 줄로 이은 것
Loss
- throughput의 두 번째 의미로 loss와 연관이 있음 내가 얼마를 넣었는데 얼마가 버려졌는지를 계산하는 경우
- 내가 입력한 것 대비 출력이 얼마나 나오는지, 넣은 것을 1이라고 하였을 때 나온 거가 x, x/1 결과로 나오는 소수점 숫자
Packet Loss
- 내가 보낸 메시지 중에서 몇 개가 없어졌는지
- 라우터는 다른 패킷을 처리하는 동안 패킷을 받으면 입력 버퍼에 저장해 차례를 기다려야 함
- 입력 버퍼의 크기가 제한되어 있어 버퍼가 가득 차면 다음 패킷을 버려야 할 수도 있다.
Congestion Control (혼잡제어)
- 성능을 향상하는 메커니즘
- 네트워크 계층의 혼잡은 처리량과 지연 문제와 관련이 있다.
- 4 계층은 주로 3 계층 및 그 이하의 에러 검출 및 복구 혼잡제어를 하는 것이 주목적이다.
- 지연은 버퍼와 연관이 있으며 loss를 야기하기도 한다.
- 버퍼가 무조건 큰 게 좋은 것도 아니다.
Addressing
IPv4 Address
- TCP/IP 프로토콜의 IP 계층에서 각 장치의 인터넷 연결을 식별하기 위해 사용되는 식별자를 인터넷 주소 또는 IP 주소라고 한다. IPv4 주소는 32비트 주소로 호스트나 라우터의 인터넷 연결을 유일하고 전 세계적으로 정의한다. IP 주소는 호스트나 라우터가 아닌 연결의 주소이다.
- IPv4 Address Space: IPv4와 같은 프로토콜은 주소를 정의하는데, 이러한 주소의 총량을 주소 공간이라고 한다.
- IP Address는 줄에 주는 것
- 프로그래밍할 때는 hexadecimal 사용
- 앞쪽 n bits를 네트워크에 관련된 주소로 정의하고 그것을 부여받으면 네트워크 안에 노드들은 뒤쪽에 있는 것으로 알아서 한다.
- Prefix는 네트워크를 부여받은 단체, suffix는 알아서 맘대로
Classful Addressing
- IPv4는 소규모 및 대규모 네트워크를 수용하기 위해 세 가지 고정 길이 접두어로 설계되었고, 주소 공간은 다섯 클래스로 나뉘었다. 이 방식을 계급적 주소 지정이라고 하며, 현재는 사용되지 않지만 계급 없는 주소 지정의 기초가 된다.
- 클래스 A는 네트워크 prefix로 8 bits를 사용가능, 32 bits의 제일 첫 번째가 0으로 시작하는 주소라면 클래스 A
- 클래스 B는 prefix 16 bits, 10인 경우 클래스 B
- 클래스 C는 110
- A address를 받는다는 것은 8 bits로 조직이 분류되는 것 남은 24 bits는 마음대로 사용가능
- classful 방식은 사실상 이론적인 방식
Classless Addressing
- 클래스가 없는 거 가변적으로 n bits 씩 준다.
- IPv6로 주소의 길이가 길어지고 패킷 형식이 변경됨
- 단기적인 해결책으로 IPv4를 사용하되 클래스 없는 주소 지정 방식을 도입해서 각 조직에 공평하게 주소를 배분하는 방식이 사용됨
- 필요한 곳에 유연하게 크기를 정해서 조직에 준다.
- suffix는 가변길이로 되어서 할당됨
- classless는 어디가 network prefix인지 알려줄 방법이 별도로 필요했음 그게 CIDR
- 12.24.76.8/8 이면 8비트가 네트워크 주소 이 경우에 맨 앞에 12가 됨
- /12 하면 8비트+4비트니까, 23은 무조건 prefix에 들어가고 두 번째에 있는 것을 bit로 펼친 다음에 앞쪽의 4bit 합해서 12bit를 네트워크 주소로 쓰겠다는 것
- n에 해당하는 prefix length를 표현하는 것이 classless 방식의 IP 주소를 표현하는 방법
- 32비트가 주어지고 우리 조직에서 쓸 수 있는 네트워크 prefix를 n비트로 할당받고 나면 prefix는 바꿀 수가 없으니 32-n 만큼을 자율적으로 우리 조직 안에서 부여할 수 있음
- 라우터가 알아야 할 건 destination의 네트워크 주소
- 라우터는 목적지 주소를 보고 결정을 내릴 때 경희대 prefix면 그거만 알면 된다.
- forwarding table의 destination address에 network address로 바뀌어 있음
- IP패킷이 오면 IP패킷의 destination address를 읽고 본인이 table 중에 destination address의 prefix가 맞는 곳만 보고(network prefix만 보고) 그쪽으로 보낸다.
- 라우팅 테이블의 key 값이 네트워크 주소지, 32bit 전부 이용해서 목적지를 찾아가지 않는다.
- ISP를 경희대라고 한다면 그 안에서 내부적으로 또 나눠짐 block1은 공대, 64 ~ 127 체대 이런 식으로 줄 수 있음
- 경희대가 network prefix를 할당받았지만 suffix 안에서 또다시 sub network suffix를 만들 수밖에 없음
- 내부적으로 /26으로 해가지고 앞 주소가 26bit까지 봐야 네트워크지만 다 연속적이고 ISP 하나가 이 모든 것을 커버하니 결국 주소는 인터넷에선 다 합쳐서 160.70.14.0부터 160.70.14.255는 어차피 경희대 Larger block 한테 주면 되니까 인터넷에 있는 애는 더 작아진다. 즉, 26비트 주소를 관리할 필요가 없는 인터넷은 이것을 합친다. 24비트만 보면 된다. 어차피 24비트 이후 2개의 비트는 다 안으로 들어가서 처리되니까. 인터넷에선 blcok1,2,3,4의 존재를 모르고 그것을 모두 다 묶은 larger block을 커버하는 애한테만 전달하면 되고 larger block을 처리하는 애의 network prefix만 알면된다.
- block1,2,3,4는 네트워크 prefix가 26비트지만 4개를 합쳐서 인터넷에서 처리해도 되니까 24비트만 보고 처리한다.
- 이렇게 주소의 네트워크 prefix를 합치는 행위를 address aggregation이라고 한다.
'Computer Science > 컴퓨터 네크워크' 카테고리의 다른 글
[컴퓨터 네트워크] 5-2장 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 |