네트워크 정리
네트워크 정리
Behrouz A. Forouzan “TCP/IP Protocol Suite” 참고
Introduction
Brief History
네트워크란 커뮤니케이션 기기들의 그룹이라 볼 수 있고 Internet은 서로 커뮤니케이션 가능한 Network 들이라 볼 수 있음
Protocols and Standards
- Protocol(프로토콜) = Rule(규칙)
- Standards(표준) = 룰을 따르는 것
The OSI Model and the TCP/IP Protocol Suite
Protocol Layers
프로토콜은 두 개의 객체가 커뮤니케이션하는데 필요함 (서로 규칙이 맞아야 말이 통함), 만약 커뮤니케이션 방법이 어렵다면 각자 프로토콜을 가진 여러 레이어로 나눌 수 있음
-
커뮤니케이션이 간단할 경우
-
어려울 경우
OSI Model
OSI(Open Systems Interconnection)이란 ISO(International Standards Organization)이 1970년대에 만든 네트워크 커뮤니케이션 표준
- OSI model을 이용한 데이터 교환
- In-Capsulation : 데이터에 헤더를 붙여 패킷으로 만든 후 하위 레이어로 보냄
-
De-Capsulation : 데이터에서 헤더를 때면서 상위 레이어로 보냄
- 물리 레이어(Physical Layer)는 각각의 bit를 하나의 노드에서 다른 노드로 옮겨줘야함
OSI Layers 요약
# | 이름 | 주소 | 데이터단위 | 하는 일 |
---|---|---|---|---|
7 | Application | Application Specific | 네트워크 자원 접근 가능하게 | |
6 | Presentation | 데이터 해석, 암호화, 압축 | ||
5 | Session | Message | Session 열기, 관리, 닫기 | |
4 | Transport | PORT (TCP/UDP) 2byte | Segment(TCP), User Datagram(UDP) | 신뢰성 있는 Process-to-Process 메시지 전송과 에러 복구 |
3 | Network | IP (Logical) 4byte(v4)/16byte(v6) | Datagram(패킷) | 인터넷 작동을 위해 패킷을 목적지로 보냄 |
2 | Data Link | Mac (Physical) 6byte | Frame | Hop-to-Hop 전송을 위해 비트들을 프레임으로 관리 |
1 | Physical | Bit | 비트를 매체(Medium)를 통해 전송, 기계적, 전자적 능력 필요 |
TCP/IP Protocol Suite
OSI 모델 보다 먼저 만들어짐
Layer | Name |
---|---|
Layer 5 | Application |
Layer 4 | Transport |
Layer 3 | Network |
Layer 2 | Data Link |
Layer 1 | Physical |
Physical Address
6byte 16진수 주소를 가짐
- eg) 07:01:02:01:2C:4B
-
라우터를 지나면서(Hop-to-Hop) Mac 주소는 바뀌지만 Logical 주소와 Port 주소는 바뀌지 않음
Underlying Technology (Layer 1, 2)
레이어 1, 2는 Access가 목적이고 3, 4, 5는 네트워킹이 목적임
LAN (wired Local Area Networks)
제한된 범위 (가정, 회사) 내에서 사용하는 네트워크, 독립된(Isolated) 네트워크 구성 가능, 최근 LAN은 WAN(Wide Area Network)나 인터넷에 연결됨, 주로 Ethernet(이더넷) 사용
- 이더넷을 주로 사용하나, Token ring, Token bus, FDDI, ATM LAN 등도 존재
-
이더넷 주소는 6bytes 사용
-
첫 byte 마지막 자리가 0이면 유니캐스트 (1:1 통신), 1이면 멀티캐스트 (1:N 통신)
-
모든 비트가 1 이면 브로드캐스트(Broadcast, 1:ALL)
- FF:FF:FF:FF:FF:FF
Wireless Lans
IEEE 802.11 무선랜 (무선 이더넷), 블루투스
Point-to-Point Wans
Point-to-Point Wide Area Network. WAN은 떨어져 있는 두 기기를 공공 네트워크 선(모뎀 등)으로 이어줌
- DSL, Cable 모뎀, T-line, SONET 등 있음
Switched Wans
인터넷의 백본 네트워크는 스위치 WAN임. 넓은 영역을 커버하고 몇 포인트에 유저가 접근하는걸 제공해줌. 포트가 여러 개라 여러 입력과 출력을 낼 수 있음
Connecting Devices
LAN과 WAN들은 보통 떨어져있지 않고 같이 연결되거나 인터넷에 연결되어 사용됨.
- Repeaters (HUB) : 자신에게 온 모든 데이터를 전달하고 (필터링 기능 없음) 증폭기 역할도 함
- Bridges (Two-layer switches) : 테이블이 있어 필터링 가능, 프레임의 물리 주소를 바꾸지 않음
- Multi Port Bridge = Switch
- Routers (Three-layer switches) : 세개의 레이어(Network, Data Link, Physical)를 가진 기기
- 라우터는 패킷의 물리 주소(MAC)를 바꿈
-
Repeater와 Bridge는 LAN의 세그먼트를 연결해주고, 라우터는 LAN이나 WAN을 서로 연결해줌 (Internetwork)
Introduction to Network Layer
Introduction
인터넷을 블랙박스라 생각하고, 여기서는 컴퓨터 두 대가 서로의 어플리케이션 레이어끼리의 메시지를 준다고 생각
-
인터넷은 LAN들과 WAN들의 연결이라 생각하면 됨
Switching
만약 메시지가 길을 따라 가다가 연결기기(Connecting device)를 만나면 그 기기가 어디 출력 포트로 보낼지 선택을 해야함. 연결기기가 스위치로서 작동한다고 보면됨
Circuit Switching
전체 메시지가 패킷으로 나누어지지 않고 출발지(Source)에서 목적지(Destination) 까지 전송됨
- 초기 전화 시스템 생각하면됨
Packet Switching
메시지가 먼저 관리가 용이한 패킷들로 나뉜 다음 목적지로 전송됨. 목적지에 도착하면 다시 합쳐짐
Packet Switching
네트워크 레이어(레이어3)은 패킷 스위치 네트워크로 디자인됨. 패킷들을 나눈다고 했는데, 이 패킷들을 “데이터그램(Datagram)” 이라 부름. 데이터그램은 목적지에 도착하면 다시 재조립됨. 과거에는 보통 Packet-switched network layer의 경우 Connectionless 서비스로 개발되었지만 최근에는 Conneection-oriented 서비스인 경우가 종종 있음
Connectionless packet-switched network
- UDP의 경우
- 순서가 보존되지 않음 (따로 관리 안함)
-
속도가 빠름
- Forwarding process in a Connectionless Network
- Forwarding (포워딩) : 다음 HOP으로 전송하는 것
- Routing (라우팅) : Ent-to-End 전송
-
라우터에서 테이블 룩업 후 도착지 주소(Destination address)에 해당하는 인터페이스(포트)를 통해 전송
- Delay in a connectionless network
-
Delay variation(Jitter)이 있어 버퍼링을 함 (편차 상쇄)
-
Connection-oriented packet-switched network
- TCP의 경우
- 순서가 보존됨 (따로 순서와 전송 등을 관리하기 때문)
-
속도가 UDP 보단 느림
-
포워딩이 도착지 주소가 아닌 패킷의 “라벨”에 따라 이루어짐
- Sending request packet in a virtual-circuit network
- 마치 전선(길)이 있는 것 처럼 데이터 전송
-
Signaling으로 미리 가상의 길을 만든 후 전
- Delay in a connection-oriented network
-
Setup과 Teardown시 시간이 걸리긴 하지만 전송중 딜레이는 더 적음 (테이블 그때마다 찾아보지 않아도되기 때문)
-
Network Layer Services
Services provided at the source computer
Processing at each router
Processing at the destination computer
IPv4 Addresses
IP(Network) 레이어에서 인터넷에 연결된 각 기기를 구분하기 위해 부르는 주소를 IP주소 라 한다. IPv4 주소의 경우 32bit (4byte) 주소를 사용. 인터넷의 Host나 Router를 고유하게 구분하기 위해 사용. IP 주소는 인터페이스의 주소임
- 32bit 이므로 $2^{32}$개의 주소를 가질 수 있음
- 10진수 사용 eg) 255.124.0.125.
Classful Addressing
처음 IPv4를 만들 때는 클래스라는 컨셉을 썻음. 1990년대 중반부터 Classless 사용.
- NetID, HostID
- Netid는 할당해주고 Hostid는 할당 받은 기관이 마음대로 사용
- A, B 클래스는 너무 많이 낭비됨
- C 클래스는 너무 적음
- D 클래스는 통신 할 때만 사용
-
IPv4는 거의 다 할당 됨
-
샘플 인터넷
- Network address (NetID)는 네트워크의 구분자(Identifier)
-
라우팅 테이블에 모든 주소가 있는 것이 아니라 NetID들이 있음
-
- Subnetwork mask
-
NetID, SubnetID, HostID로도 구분 가능 (서브넷은 적절히 크기 정함)
-
- Supernet mask도 존재
Classless Addressing
서브넷, 슈퍼넷을 통해서도 주소 고갈문제를 해결 할 수는 없음. IPv6로 많은 주소 제공도 있지만, 그 전에 같은 주소 공간을 쓰지만 분포를 다르게 해서 각 기관이 공평하게 쓰는 방법이 있고 이를 IPv4를 이용한 Classless addressing 방법이라함
- Classless Addressing에서는 접두사(Prefix)는 네트워크를 정의하고, 집미사(Suffix)는 호스트를 정의
-
접두사는 1에서 32비트까지 쓰임
-
- Classless는 어디까지가 NetworkID인지 따로 알려줘야함
- 아래에서 n이 접두사의 길이를 뜻함
- byte.byte.byte.byte/n
- 아래에서 n이 접두사의 길이를 뜻함
- Subnet 잘못 지정시 다른 주소의 NetworkID와 겹침
Special Addresses
- 0.0.0.0 : 주소를 모를 때 (DHCP에서 처음에 주소를 얻어올 때)
- 255.255.255.255 : Broadcast 주소 (모든 네트워크)
- 라우터는 Broadcast가 목적지인 패킷을 막음 (해당 라우터 이내에서만 가도록)
- 127.x.y.z : 컴퓨터 내부 프로세스 간 통신 (밖으로 나가지 않음)
-
개인용 네트워크 (공유기)
Block Number of addresses 10.0.0.0/8 16,777,216 172.16.0.0./12 1,047,584 192.168.0.0./16 65,536 169.254.0.0./16 65,536 - Directed Broadcast
- 네트워크가 221.45.71.0/24 일 경우 라우터에서 221.45.71.255/24(HostID 비트가 모두 1)로 패킷을 보내면 해당 네트워크로 브로드캐스팅함
NAT
NAT (Network Addres Translation), 공유기라고 생각하면됨 Public 주소 패킷을 받아 Translation Table을 보고 Private 주소로 변환해서 넘겨줌
Delivery and Forwarding of IP Packets
Delivery
네트워크 레이어는 패킷 전송을 담당해야함. 목적지까지 패킷을 전송하는 방법은 크게 Direct 와 Indirect 두 방법이 있음
Direct Delivery
한 네트워크 안에서 패킷 전송 (네트워크 내의 기기끼리 혹은 네트워크 담당 라우터에서 기기까지)
Indirect Delivery
라우터를 거치면서 패킷 전송
Forwarding
라우터 내의 패킷을 패킷의 목적지로 보내는 것 (Deliver to the next Hop)
-
Route를 모두 보거나 (Full route), 다음 Hop 만 봄, IP Router는 Next HOP 만 봄
Network-specific routing
-
네트워크 단위로 보기 때문에 좀 더 간소함
Host-specific routing
-
DNS 같은 경우 예외로 Host specific 쓰기도 함
Default routing
- 테이블에 따로 명시되지 않은 Route는 Default로 감
-
보통 PC는 Default 만 가지기도 함
Classful Addressing에서 Routing
-
Net
-
Subnet
- 위에서 Interface Number는 라우터 슬롯의 맥주소임
-
Classful Addressing에서는 3열로 테이블 표현 가능하지만 Classless일 경우 Prefix까지 합쳐 4열로 표현
Longest mask matching
테이블에서 중복되는 주소가 있을 시 가장 길게 매칭되는 쪽으로 감
- Hierarchical routing with ISPs
- 계층적 구조를 가지고 라우팅 가능
- 목적지 주소로 라우팅
- 라벨을 기반으로 라우팅
Structure of A Router (라우터 구조)
-
Router Components
-
Input Port
-
Output Port
-
Banyan switch
-
Batcher-banyan switch
IPv4 (Internet Protocol Version 4)
Introduction
Internet Protocol은 네트워크 레이어에서 TCP/IP 프로토콜이 사용하는 전송 매커니즘
Datagrams
네트워크 레이어의 패킷을 Datagram 이라고 함. “헤더“와 “데이터“로 이루어져 있음
- 헤더 : 20 ~ 60 byte로 라우팅과 전송에 필요한 필수 정보를 가짐
IP Datagram 헤더 구조
이름 | 역할 |
---|---|
VER | 버전, IPv4일 경우 0100 |
HLEN | 헤더 길이, 단위는 word(4byte), 최소 5이상 (20byte)이상 이어야 정상, 아니면 무시 |
Service type | Real Time, Reliable 등의 패킷 타입 명시 (요즘은 사용 안함), 앞의 6비트만 사용, XXXXX0는 인터넷, XXXX11은 로컬, XXXX01은 임시 혹은 실험용 |
Total length | 헤더+데이터 총 길이, 단위는 byte |
Identification | 패킷 ID, Fragmentation 후에도 같은 패킷인지 인식 위해 |
Fragmentation offset | byte/8, 시작 지점으로 부터 얼마나 떨어져 있는지, 175의 경우 시작이 1400byte라는 말 |
Flags | 3bit는 [0DM]으로 볼 수 있음, D는 Fragment하면 안됨, M은 Fragment가 더 있음을 의미, 001의 경우 뒤에 패킷이 더 있다는 의미 |
Time to live (TTL) | Hop Count라고도 하며 몇 HOP갈 것인지, 보통 255,128,64 |
Protocol | TCP(6), UDP(17) 기타 등등 |
Header checksum | 헤더의 Corruption체크 (정보 손상이 있는지) |
Source IP address | 송신지 주소 (4byte) |
Destination IP address | 수신지 주소 (4byte) |
Options+Padding | 기타 |
Encapsulation of a small datagram in an Ethernet frame
Multiplexing
- ICMP (1) : Internet Control Message Protocol
- IGMP (2) : Internet Group Management Protocol (Multicast)
- TCP (6) : Transmission Control Protocol
- UDP (17) : User Datagram Protocol
- OSPF (89) : Open Shortest Path First Routing Protocol
Fragmentation
패킷을 나눔
MTU (Maximum Transfer Unit)
망에서 지원하는 최대 패킷 사이즈
- Datagram이 왔을 경우 MTU로 사이즈로 나눠서(Fragmentation) 전송
- 오직 data만 나눔 (헤더를 나눌수는 없음)
Fragmentation 예제
Options
헤더 20byte는 앞의 기본 헤더이고 + 40byte까지 옵션을 설정 가능. 네트워크 테스팅과 디버깅시 사용. 헤더에 꼭 필요하진 않음
- TLV 포맷
Operation | 설명 |
---|---|
No operation | Padding 용 (4의 배수 byte로 끝나게) |
End of option | 옵션 끝 알림 |
Record route | 루트 기억 (총 9개) |
Strict source route | 수신자가 루트를 정해주고, 갈 수 없다면 버림 |
Loose source route | 수신자가 루트를 정해주고 웬만하면 따라가게함 |
Timestamp | 보낸 시간 |
Checksum
TCP/IP 프로토콜에서 에러 검출 방법을 Checksum이라함. 전송 중 패킷 손상을 방지함. 수신자가 헤더에 대해서 계산을 해서 결과가 만족되면 패킷을 받아들임
- Checksum은 헤더만을 관리하고, Data는 하지 않음 (TCP가 관리)
- 1의 보수 방법
IP Components
ARP (Address Resolution Protocol)
주소를 알아오는 프로토콜
Address Mapping
논리적(Logical), 물리적(Physical) 주소들 끼리 맵핑이 필요함. 정적(Static) 맵핑과 동적(Dynamic) 맵핑 존재. IP 데이터그램에는 목적지의 논리적 주소만 존재함. 하지만 데이터그램은 물리적 네트워크를 통과하기 위해 Encapsulation을 통해 프레임으로 변환되어야 함. 그 말인즉 송신자가 수신자의 물리 주소를 알아야한다는 말. ARP 는 IP 프로토콜로 부터 논리 주소를 받고 해당 주소를 물리 주소와 맵핑한 다음 데이터 링크 레이어로 보냄
ARP Operation
Subnet안에서 브로드캐스트로 ARP Request를 보내면 해당하는 기기에서 물리주소를 채워넣은 다음 다시 보낸 기기로 유니캐스트로 돌려보냄
ARP Packet
ARP Packet Encapsulation
4가지 케이스
- 같은 네트워크 상에서 한 호스트가 다른 호스트로 패킷 보낼 경우
- 타겟 주소는 IP 데이터그램의 목적지 주소
- 호스트가 다른 네트워크의 호스트로 패킷을 보낼 경우
- 타겟 주소는 라우터의 IP 주소
- 라우터가 다른 네트워크의 호스트로 패킷을 보낼 경우
- 타겟 주소는 다른 라우터의 IP 주소
- 라우터가 같은 네트워크의 호스트에게 패킷을 보낼 경우
- 타겟 주소는 IP 데이터그램의 목적지 주소
ARP Package
ICMPv4 (Internet Control Message Protocol version 4)
IP의 컨트롤을 보완. IP 프로토콜은 기본적으로 에러 보고나, 에러를 보정하는 매커니즘이 없음.
ICMP Encapsulation
Messages
크게 에러 보고 메시지 (Error-reporting messages) 와 쿼리 메시지 (Query messages) 로 나눌 수 있음. 에러는 목적지를 가기전 라우터나 목적지 호스트가 IP 패킷을 처리하는데 문제가 발생했을 경우 전송. 쿼리 메시지는 호스트나 네트워크 관리자가 다른 라우터나 호스트의 정보를 얻기 위해 사용
- ICMP는 항상 송신자(Original source)에게 에러 메시지를 보고함
ICMP Messages
Category | Type | Message |
---|---|---|
에러 보고 메시지 | 3 | Destination unreachable, 목적지 도달 불가 |
^ | 4 | Source quench, 송신자에게 그만 전송하라고 연락 (목적지 호스트가 너무 혼잡할 때), 데이터그램 하나마다 메시지 하나씩 전송 |
^ | 11 | Time exceeded, 시간 초과, 라우터가 TTL 값을 0으로 줄이면 소스에 메시지 전송, 수신자가 시간 안에 Fragment들을 다 받지 못하면 메시지 전송 |
^ | 12 | Parameter problem, 헤더 문제 (원인도 함께 보내줌) |
^ | 5 | Redirection, 호스트와 같은 네트워크 내의 라우터가 다른 라우터로 보낸다고 연락, 호스트 라우팅 테이블 업데이트 시 사용 가능 |
쿼리 메시지 | 8 or 0 | Echo request or reply, Ping 보냄, Echo Request 받은 호스트나 라우터는 Echo Reply 메시지를 다시 보냄 |
^ | 13 or 14 | Timestamp request or reply, 걸린 시간 측정, 두 기기 사이의 시간 동기화 시 사용 가능 |
ICMP Message Format
Debugging Tools
- PING : Echo request and reply
- Traceroute : HOP 순서 알아볼 수 있음
ICMP Package
Mobile IP
Addressing
Stationary Host (고정된 호스트)
IP 주소는 기본적으로 고정된 호스트를 가정하고 디자인됨. 주소의 일부는 어디 네트워크에 어떤 호스트가 붙은지 나타내기 때문
Home address and Care-of address
모바일 IP는 영구적인 Home address와 호스트에 따라 바뀔 수 있는 Care-of address 둘 다 가짐
Agents
모바일 호스트와 Foreign 에이전트가 같다면 Care-of 주소를 Colocated care-of 주소로 불림
Three Phases
원격 호스트와 커뮤니케이션을 위해 모바일 호스트는 : 에이전트 발견 (Agent discovery), 등록 (Registration), 데이터 전송 (Data transfer) 세 단계를 거친다.
- 모바일 호스트가 이동더라도 나머지 인터넷에 무관함 (Transparent)
Agent Discovery
에이전트가 어디 있는지 파악
- ICMP 쿼리 메시지의 Router advertisement, Router solicitation 메시지 사용
- Agent solicitation : 에이전트가 어디있는지?
- Agent advertisement : 에이전트 응답
Registration
Care-of 주소를 Home 에이전트에게 알려줌
- UDP well-known 434포트를 이용해 전송
- Registration request : Home 에이전트에 등록 요청
- Registration reply : Home 에이전트에 등록
Data Transfer
데이터 전송
Inefficiency in Mobile IP
더블 크로싱 (Double crossing) 이라는 심각한 문제와, 삼각 라우팅 (Triangle routing) 이라는 덜 문제가 있음
Double Crossing
같은 네트워크 안인데 먼길을 거쳐와야 함
Triangle Routing
꼭 홈 에이전트를 거쳐와야 함
Unicast Routing Protocols
Inter and Intra Domain Routing
인터넷이 너무 크기 때문에 라우팅 프로토콜이 모든 라우터의 테이블을 관리하기는 힘들어 AS(Autonomous system)들로 인터넷이 나누어짐. AS는 하나의 기관이 운영하는 네트워크나 라우터의 그룹. AS 안의 라우팅을 Intra-domain 라우팅이라 하고, AS끼리의 라우팅을 Inter-domain 라우팅이라 함 (AS를 Domain이라 볼 수 있음). Inter domain routing protocol을 IGP (Interior Gateway Protocol), IRP (Interior Routing Protocol)라고도 한다.
라우팅 프로토콜들
가장 짧은 길을 알기 위한 프로토콜들 김동은넷님 블로그 참고
RIP (Routing Information Protocol)
베르만포드 알고리즘 사용, 라우터들이 자신이 가지고 있는 정보를 이웃 라우터와 계속해서 공유하면서 라우팅 테이블을 만든다.
- Intra-domain 용
- Distance vector routing = 베르만포드 사용
- UDP well-known 520 포트 사용
- 3개의 타이머 사용
Timer | 하는일 |
---|---|
Periodic | 주고 받는 간격 |
Expiration | 유효 기간 |
Garbage collectipn | 에러 |
OSPF (Open Shortest Path First)
다익스트라 사용, 망을 다 알 경우 사용한다. 처음에 미리 네트워크의 MAP을 그린다(LSDB - Ling State Database). 그 후 최단 경로를 다익스트라 알고리즘을 이용해 찾는다.
- Intra-domain 용
- Link state routing = 다익스트라 사용
- OSPF 패킷은 IP 데이터그램에 Encapsulation됨 (Multicast)
- Link 종류
붉은색은 라우터, 푸른색은 이더넷
-
Point-to-Point
-
Transient
-
Stub
-
Virtual
-
Path Vector Routing
Distance vector 라우팅은 Hop이 많으면 불안정하고 Link state 라우팅은 Hop이 많으면 자원소모가 너무 심함. Reachability를 고려하기 위해 라우팅 테이블을 합쳐줌
- Path Vector의 경우 RIP와 거의 유사하게 Spanning Tree를 만들게 되는데, 이때 코스트를 고려하지 않고, 이웃 노드에 대한 정보만 고려한다. 다만 RIP와 다른게 Next hop이 아니라 Path의 모든 hop을 저장해둔다.
BGP (Border Gateway Protocol)
Path Vector Routing을 이용하여 AS 사이에 라우팅을 담당한다
- TCP 179 포트 사용 (신뢰성 보장)
- E-BGP : AS와 AS간 BGP 라우팅
- I-BGP : AS내에서 BGP 정보 교환
CIDR (Classless Inter-Domain Routing)
Multicasting and Multicast Routing Protocols
Unicasting
1:1 통신, 하나의 호스트에서 다른 하나의 호스트로 패킷 전송
- 라우터는 받은 데이터그램을 하나의 인터페이스로만 전송
Multicasting
1:N 통신, 가입 필요, Class D
- 라우터는 받은 데이터그램을 여러개의 인터페이스로 전송
Multicasting vs. Multiple unicasting
멀티캐스팅은 동시에 패킷을 전송하지만, 유니캐스트는 패킷을 복제한 후 뿌려줌
- 멀티캐스트 - 딜레이가 비슷함 (실시간 방송 등)
- 유니캐스트 - 딜레이가 다름
Multicast Addresses
멀티캐스트 주소란, 멀티캐스트 그룹에 포함된 호스트들의 주소를 뜻한다
CIDR | Range | Assignment |
---|---|---|
224.0.0.0/24 | 224.0.0.0 ~ 224.0.0.255 | Local Network Control Block |
224.0.1.0/24 | 224.0.1.0 ~ 224.0.1.255 | Internetwork Control Block |
224.0.2.0 ~ 224.0.255.255 | AD HOC Block | |
224.1.0.0/16 | 224.1.0.0 ~ 224.1.255.255 | ST(Stream) Multicast Group Block |
224.2.0.0/16 | 224.2.0.0 ~ 224.2.255.255 | SDP/SAP Block |
224.3.0.0 ~ 231.255.255.255 | Reserved | |
232.0.0.0/8 | 232.0.0.0 ~ 232.255.255.255 | Source Specific Multicast(SSM) |
233.0.0.0/8 | 233.0.0.0 ~ 233.255.255.255 | GLOP Block |
234.0.0.0 ~ 238.255.255.255 | Reserved | |
239.0.0.0/8 | 239.0.0.0 ~ 239.255.255.255 | Administratively Scoped Block |
Local Network Control Block
Address | Assignment |
---|---|
224.0.0.0 | Base address (reserved) |
224.0.0.1 | All systems (호스트나 라우터들) on this network |
224.0.0.2 | All routers on this network |
224.0.0.4 | DMVRP routers |
224.0.0.5 | OSPF routers |
224.0.0.7 | ST (Stream) routers |
224.0.0.8 | ST hosts |
224.0.0.9 | RIP2 routers |
224.0.0.10 | IGRP routers |
224.0.0.11 | Mobile Agents |
224.0.0.12 | DHCP servers |
224.0.0.13 | PIM routers |
224.0.0.14 | RSVP encapsulation |
224.0.0.15 | CBT routers |
224.0.0.22 | IGMPv3 |
Mapping Class D to Physical address
이더넷 멀티캐스트 물리 주소는 01:00:5E:00:00:00 ~ 01:00:5E:7F:FF:FF 까지임
- 01:00:5E는 기관명 (정해져 있음)
- 7F인 이유는 23비트 사용하기 때문
Tunneling
멀티캐스트 전송중 멀티캐스트 지원이 안되면 앞에 헤더를 붙여 유니캐스트로 변환해서 전송
IGMP (Internet Group Management Protocol)
멀티캐스트 통신은 멀티캐스트 그룹에 포함된 호스트에 패킷을 전송하는 것이므로 멀티캐스트 라우터는 로얄(Loyal) 멤버가 어디 인터페이스에 연결되어 있는지 알아야함. 이를 위해 지역적(Locally)으로는 IGMP 프로토콜 을 사용하고, 전역적(Globally)이게는 Multicast Routing Protocol 사용
- IGMP는 멀티캐스트 라우터가 각 인터페이스에 연관된 로얄 멤버에 대해서 리스트를 만들고 업데이트하는 것을 도와줌
IGMP Messages
라우터와 호스트간 메시지
- 소캣 레코드 중 하나라도 바뀐다면 인터페이스 상태(State)도 바뀜
- Membership query : 라우터에서 호스트로
- Membership report : 호스트에서 라우터로 (있다고만 보고), 리포트가 먼저 갈 수도 있음
Socket State
Sending change state report
Interface State
226.14.5.2에서 Exclude = {a, b, c}, {b, c, g}, Include = {a, b, d, e} 이므로, Exclude - Include = {c}. 228.24.21.4에서 Include = {b, c, f}, {d, e, f} 이므로 Include = {b, c, d, e, f}
- 226.14.5.2 마지막이 Exclude 이므로 Exclude 필터
- 228.24.21.4 마지막이 Include 이므로 Include 필터
Router State
Multicast Routing
Optimal Routing: Shortest Path Trees
- 멀티캐스트 라우팅에서 라우터는 각 그룹에 대한 최단 거리 트리를 만들어야함
Source-based Tree Approach
각 라우터가 각 그룹에 대해 하나씩 최단 거리 트리를 가져야함
- Membership이 바뀌거나 Session이 끝날 때마다 계속 바뀜
Group-shared Tree Approach
각 그룹의 최단 거리 트리를 가진 코어 라우터가 멀티캐스팅에 참여
- 소스 상관없이 일단 Core로 다 모음
Routing Protocols
Tree 구성이 목적인 프로토콜
- MOSPF : Multicast Extesion to OSPF
- OSPF로 이미 MAP이 있는 상태에서 그룹 별로 골라서 가면된다. 이 때 멀티캐스트 그룹이 들어오고 나가는 정보를 뿌리는 The group membership LSA를 사용한다.
- DVMRP : Distance Vector Muiticast Routing Protocol RIP와 유사
- PIM : Protocol Independent Multicast
- DM : Dense Mode
- SM : Sparse Mode
- CBT : Core Base Tree
DVMRP - Flooding, RPF, RPB, RPM
- Flooding : 자기가 패킷을 받은 곳을 제외한 모든 곳에 패킷을 뿌린다.
- RPF : Reverse Path Forwading, Flooding process에서 루프를 없앰
- 내가 패킷을 받았을 때, 최단 경로에서 오는 패킷만 다른 곳에 전달한다. 최단 경로인지 아는 방법은 RIP에서 만든 라우팅 테이블을 보고, 패킷의 수신지로 가는 next hop 이 방금 온 패킷의 라우터라면 최단 경로로 판단한다.
- 하지만 목적지에서 동일한 패킷 여러개를 받을 수도 있음
- RPB : Reverse Path Broadcasting, 만약 목적지에서 두 개의 중복된 패킷을 받았을 경우 최단 경로인 라우터 하나만 지정해 패킷을 하나만 받도록 한다.
- 목적지마다 하나의 패킷만 받게 해줌
- RPM : Reverse Path Multicasting, RPB에 가지치기(Pruning)과 접붙이기(Grafting) 추가
- Dynamic membership change를 제공해줌
- 만약 목적지에서 패킷을 받았는데 내가 속하지 않은 그룹의 패킷이 도착했다면 IGMP를 사용해 그룹에서 탈퇴시켜 버린다. 이걸 Pruning이라 한다.
- 내가 필요한 패킷인데 그룹에 속해있지 않아 받지 못했다면 IGMP로 그룹에 가입하고 이를 Grafting 이라 한다.
CBT의 경우
소스가 멀티캐스트 패킷(유니캐스트 패킷으로 터널링된)을 코어 라우터로 보내면 코어 라우터가 패킷을 Decapsulate한 다음 알맞은 인터페이스로 뿌려준다.
- 모든 멤버들이 랑데뷰 라우터의 IP를 알고있다.
- 랑데뷰 라우터에 유니캐스트로 패킷을 주면 알아서 랑데뷰 라우터가 멀티캐스팅을 해준다.
PIM-DM
RPF + [Pruning, Grafting] 사용, LAN 같은 Dense 멀티캐스트 환경에서 사용
- DVMRP와 유사하게 동작, 하지만 RIP, OSPF 둘 다 사용가능
- DVMRP 처럼 그룹에 속해있는지 판별하는 능력이 없다. 만약 그룹에 속해있지 않은 패킷을 받으면 해당 그룹에 속해있지 않은 네트워크라면 해당 그룹에 속해있지 않다고 랑데뷰 라우터에게 알린다.
PIM-SM
WAN 같은 Sparse 멀티캐스트 환경에서 사용
- CBT와 유사하지만 더 간단함
MBONE
멀티캐스트 라우터를 쓰지 않고, 유니캐스트 라우터 사이에 논리적 터널을 만듬
Introduction to Transport Layer
- UDP : User Datagram Protocol
- TCP : Transmission Control Protocol
- SCTP : TCP 개선 (TCP 장점 + UDP 장점)
- DCCP : Datagram Congestion Control Protocol (UDP + Congestion control)
Process-to-Process Communications
- Network 레이어 : Host-to-Host (IP)
- Transport 레이어 : Process-to-Process (IP + Port)
- 소캣 주소 = IP 주소 + Port
- IP 주소 : Host 선택
- Port 번호 : Process 선택
Port
16비트로 이루어짐 0 ~ 65535
- Well-known : 0 ~ 1023
- Registered : 1024 ~ 49151
- Dynamic or Private : 49152 ~ 65536
UDP(User Datagram Protocol)
Application 프로그램과 Network 레이어 사이에서 데이터 전송
User Datagram
UDP 패킷을 User Datagram이라 함. 헤더는 8 byte
UDP Service
UDP에서 Well-known
Port | Protocol | Description |
---|---|---|
7 | Echo | Echoes a received datagram back to the sender |
9 | Discard | Discards any datagram that is received |
11 | Users | Active users |
13 | Daytime | Returns the date and the time |
17 | Quote | Returns a quote of the day |
19 | Chargen | Returns a string of characters |
53 | Nameserver | Domain Name Servcie |
67 | Bootps | Server port to download bootstrap information |
68 | Bootpc | Client port to download bootstrap information |
69 | TFTP | Trivial File Transfer Protocol |
111 | RPC | Remote Procedure Call |
123 | NTP | Network Time Protocol |
161 | SNMP | Simple Network Management Protocol |
162 | SNMP | Simple Network Management Protocol(Trap) |
Simple Checksum 계산
Encapsulation / Decapsulation
Queues in UDP
각 포트마다 큐를 가짐
Multiplexing / Demultiplexing
UDP Application
- DNS : 클라이언트가 짧은 요청을 보내고 빨리 응답을 받아야 하기 때문
- SMTP 같이 큰 데이터가 있는 패킷을 UDP로 보낼 수는 없음, 받을 때 순서가 고려되지 않고 중간에 손실 가능하기 때문
UDP Package
Control Block Table
State | Process ID | Port Number | Queue Number |
---|---|---|---|
IN-USE | 2345 | 52010 | 34 |
IN-USE | 3422 | 52011 | |
FREE | |||
IN-USE | 4652 | 52012 | 38 |
FREE |
TCP (Transmission Control Protocol)
TCP Services
Well-known Port TCP
Port | Protocol | Description |
---|---|---|
7 | Echo | Echoes a received datagram back to the sender |
9 | Discard | Discards any datagram that is received |
11 | Users | Active users |
13 | Daytime | Returns the date and the time |
17 | Quote | Returns a quote of the day |
19 | Chargen | Returns a string of characters |
20 and 21 | FTP | File Transfer Protocol (Data and Control) |
23 | TELNET | Terminal Network |
25 | SMTP | Simple Mail Transfer Protocol |
53 | DNS | Domain Name Server |
67 | BOOTP | Bootstrap Protocol |
79 | Finger | Finger |
80 | HTTP | Hypertext Transfer Protocol |
Stream delivery
byte의 흐름이라 생각하면됨
Sending and Receiving Buffers
Circular Linked List Queue로 버퍼 생성
- 송신자는 수신자가 제대로 받았는지 확인하고 보내기위해 버퍼 사용
- 수신자는 스트림을 계속해서 순서대로 받기 위해 버퍼 사용
TCP Segment
보통 1024byte로 나눔 (Segmentation)
TCP Features
Numbering System
각 연결에서 보내려는 데이터의 byte는 TCP에 의해 번호가 매겨짐, 시퀀스 넘버 (Sequence number)는 현재 세그먼트에 들어있는 첫 byte의 숫자라 생각하면됨
- 각 넘버링은 임의의 수로 시작됨, 패킷 Down 됐을 경우 이전것인지 최근 것인지 헷갈릴 수 있기 때문
- 5000byte 파일을 전송하고 시작 번호가 10001이고 Segment가 각각 1000byte일 경우 시퀀스 넘버는 10001, 11001, 12001, 13001, 14001 임
- Acknowledgment number필드의 값은 수신자가 받기를 원하는 다음 byte (Ack num이 10001이라면 10000까지는 받았다는 말), Acknowledgment number는 누적됨
Segment
TCP의 패킷을 세그먼트라고 함
Field | 사이즈 | 의미 |
---|---|---|
Source port address | 16bits | 송신자 포트 번호 |
Destination port address | 16bits | 수신자 포트 번호 |
Sequence number | 32bits | Segment의 첫 byte 번호 (시작 번호 만큼 Offset 가짐) |
Acknowledgment number | 32bits | 송신자가 보낸 것 중 Ack - 1byte까지는 받았다고 수신자가 보냄 |
HLEN | 4bits | 헤더 길이 word(4byte)단위 |
Reserved | 6bits | |
URG | 1bit | Urgent, 바로 Application단에 올려야함, Urgent pointer가 있음 |
ACK | 1bit | Ack 확인 필요 |
PSH | 1bit | Push, 더 받을 패킷이 없으니 Application 단으로 패킷을 올려라 |
RST | 1bit | Reset, 접속 Reset |
SYN | 1bit | Sync, Sync 패킷 (가장 처음 패킷), Sequence number 동기화 |
FIN | 1bit | Finish, 마지막 패킷, 접속 종료 |
Window size | 16bits | 수신자가 이용 가능한 버퍼 사이즈, ~65535까지 가짐 |
Checksum | 16bits | 오류 났을 시 복구를 위해, UDP와 마찬가지로 IP헤더까지 같이 Checksum, TCP에서는 필수 |
Urgent pointer | 16bits | 데이터 중 몇 번째 위치가 Argent 인지 |
Options and padding | ~40bytes | 옵션 |
Control Field (혹은 Flags)
URG, ACK, PSH, RST, SYN, FIN
Pseudoheader
TCP Connection
TCP는 연결 지향 (Connection-oriented) 특징을 가짐. TCP는 송수신자 사이에 가상의 길(Path)를 만듬. 그 후 세그먼트 들이 가상의 길을 통해서 전송됨. IP가 비연결(Conetionless)이므로 TCP는 자기 스스로 연결을 제어함. 예를 들어 세그먼트가 없어지거나 잘못되는 경우 다시 전송함
Connection Establishment (접속)
Three-way handshake를 통해 연결을 함
- rwnd는 Receiver Window Size
- SYN 세그먼트는 데이터가 없으면 Sequence number 하나 소모
- SYN + ACK도 마찬가지
- ACK 세그먼트는 데이터가 없으면 Sequence number 소모하지 않음
Data Transfer (데이터 전송)
Connection Termination (접속 해제)
Three-way handshake를 통해 연결 해제
- FIN 세그먼트는 데이터가 없으면 Sequence number 하나 소모
- FIN + ACK도 마찬가지
- 클라이언트에서 서버로 보내는 마지막 ACK는 Kernel 단에서 보내는 것, Connection closed에서 이미 Application 단의 연결은 끊김
Half-close (Four-way Handshaking)
나머지 패킷을 다 보내고 (소용은 없지만) 그 후 커널 단에서 접속 해제
- 만약 Reset 패킷을 받으면 바로 끝냄
State Transition Diagram
마지막 TIME_WAIT는 ACK가 없어질까봐 기다리는 것
Simultaneous Open (동시 열기)
Simultaneous Close (동시 닫기)
Denying a Connection (연결 거부)
바로 Reset 패킷을 보내면 연결 거부
Aborting a Connection (연결 중단)
Windows in TCP
TCP는 송수신자가 각각 버퍼를 가지고 있고 이를 윈도우라 함. 만약 Bidirectional 커뮤니케이션을 하고 싶다면 윈도우가 4개 필요 (송수신 각각 두 개 씩)
Send Window
- ACK를 받아야 윈도우를 슬라이딩함 (좌측 벽은 Close, 우측 벽은 Open)
- Send Window Size는 좌측벽과 우측벽 사이 전체 사이즈
- Send Window Size를 조절해서 Flow, Congestion Control 가능
Receive Window
- Byte를 받으면 ACK 보냄과 동시에 윈도우를 닫음 (Close)
- 받은 Byte는 Process가 사용하길 기다리다가, 사용이 끝나면 윈도우를 염 (Open)
- Receive Window Size는 현재 받을 수 있는 윈도우 크기
Flow Control
송신자가 데이터를 전송하는 속도와 수신자가 데이터를 받는 속도를 서로를 고려해 적절히 조절해주는 것
TCP/IP Protocol Suite
- Application 레이어는 Process, Transport 레이어는 Kernel이라 볼 수 있음
- 커널과 프로세스 사이, 커널과 커널 사이에 Flow Control Feedback 가능
- Sending Window Size < min(Receiver Buffer Size, Congestion Buffer Size)
Flow Control 예시
Error Control
TCP가 신뢰성(Reliable) 있다는 말은 한 프로그램에서 다른 프로그램으로 데이터를 보낼 때 에러가 없고, 잃거나 복제된 자료가 없이 제대로 가야 한다는 것을 뜻함. TCP의 에러는 Checksum, Acknowledgment, Time-out 세 가지를 사용해서 컨트롤 함
- ACK 세그먼트는 Sequence number를 소모하지 않고 Acknowledge하지 않는다 (ACK에 ACK를 보내지 않는다는 말)
- 데이터가 순서대로 오지 않아도 TCP는 순서를 정렬해서 Process에 전송해줌
- TCP는 Selective Repeat Protocol로서 가장 잘 모델링될 수 있음
Sender FSM
Receiver FSM
Acknowledgment Generation Rule
- 데이터를 보낼 때 ACK 포함
- 데이터가 없어도 ACK Timer가 다 되면 ACK 보냄
- Timer 종료 전 두 번 연속으로 ACK 받으면 ACK 보냄 (속도 향상을 위해)
- 잘못된 순서로 패킷이 오면 패킷 저장 후 받아야할 번호 ACK 보냄
- 4의 패킷이 제대로 오면 다음 받아야할 ACK 보냄
- 중복된 패킷을 받으면 받아야할 ACK를 보냄
Fast Retransmission
ACK 세 번 중첩해서 오면 큐 가장 앞의 세그먼트 다시 전송 후 타이머 재시작
Lost Acknowledgment
ACK 누락되면 그냥 그 다음 필요한 ACK를 보냄
- 잘 처리해주지 않으면 Deadlock에 빠질 수도
Congestion Control
Congestion(네트워크 혼잡)을 알아채고, 컨트롤 해야함
Slow Start, Exponential Increase
Threshold를 만나기 전까지 Congestion Window Size가 Exponential하게 증가함
Congestion Avoidance, Additive Increase
한단계씩 증가
TCP Congestion Policy
- Retransmission 패킷이 발생하면 Congestion 일어난 걸로 봄
- Time-out이 ACK 세 번 온 것보다 더욱 심각함
- Threshold는 계속 줄어듬
Congestion 예시
TCP Timers
최소 4개 사용
Persistence Timer
수신자의 윈도우 사이즈가 0임을 알리는 ACK가 왔을 때 송신자에서 Timer 시작하고 송신을 보류. 왜냐하면 만약 수신자 윈도우 사이즈가 다시 리사이징 돼었을 때 ACK가 손실된다면 수신자 측에서는 마냥 기다리기 때문에 Deadlock에 빠질 수 있음.
- 수신자 윈도우 사이즈가 0임을 알리는 ACK가 송신자에게 왔을 시 타이머 시작
- 타이머가 다되면 Probe라는 특수한 세그먼트를 송신자가 수신자에게 보내서 ACK를 요청함
Keepalive Timer
Idle 상태로 연결이 오래 지속되는 것을 방지하기 위해 있는 타이머, 서버에서 타이머가 시작되고, 만약 클라이언트로 부터 세그먼트를 받는 다면 타이머 초기화, Time-out은 보통 2시간인데, 2시간이 지나도록 아무 응답이 없다면 서버가 클라이언트에게 Probe 패킷을 전송하고, 서버가 ACK를 받지 못할 경우 클라이언트와의 연결을 끊음
TIME-WAIT Timer
접속 해제 시 필요 (1 ~ 2분, 2MSL(Maximum Segment Lifetime)) 마지막 ACK가 누락될 것을 대비
Retransmission Timer
누락된 세그먼트를 재전송하기 위해 ACK를 기다리는 타이머. 만약 타이머가 끝나기 전까지 ACK가 오지 않았다면 세그먼트 손실로 간주하고 재전송. 이 Time-out을 RTO(Retransmission Time-Out) 이라함
RTO 계산
RTO를 계산하기 위해서는 RTTm, RTTs, RTTd가 필요하다
- RTTm (measurement RTT) : 세그먼트 전송 후 실제 ACK가 돌아올 때 까지 걸리는 시간
- RTTs (smoothed RTT) :
RTTs = (1 - a)RTTs + a * RTTm (a = 1/8)
, 스무딩을 위해 - RTTd (deviation RTT) :
RTTd = (1 - d)RTTd + b * |RTTm - RTTs| (b = 1/4)
, 편차를 활용 - RTO =
RTTs + 4RTTd
- 만약 재전송이 일어나면 RTO = RTO * 2
Options
TCP 헤더는 최대 40byte까지 옵션 가능
Options
End of option list | 옵션의 끝 알림, 한 번만 사용 가능 |
No operation | 4byte단위로 (Word단위) 헤더 사이즈 맞추기 위해 혹은 옵션의 시작 지점 정렬위해, 여러 번 사용 가능 |
Maximum segment size | Connection setup 시 설정, 바뀌지 않음, 보통 1024byte |
Window scale factor | Connection setup 시 설정, 바뀌지 않음, 16bit, 윈도우 사이즈가 2의 몇 승인지 |
Timestamp | RTT(Round Trip Time) 계산 시 사용 |
SACK-permitted | |
SACK | Selective ACK, 전송 중간에 빠진 패킷 용 (보통 ACK는 Cumulative ACK) |
End-of-option
No-operation
Maximum-segment-size
Window-scale-factor
Timestamp
SACK
TCP Package
TCBs
TCP 컨트롤에 필요한 DB를 TCBs라 함
SCTP(Stram Control Transmission Protocol)
2000년대 초반 TCP(1970’s)를 개선해서 나옴. TCP 장점 + UDP 장점 + $\alpha$
- DCCP는 Datagram + Congestion control 기능
Introduction
SCTP는 신뢰성 있고 (Reliable), 메시지 기반 (Message-oriented) 프로토콜 (TCP는 Byte-oriented라고도 할 수 있음)
- UDP(Message-oriented)와 TCP(Control)의 좋은 특징들을 결합해서 만듬
SCTP Services
Telephony의 경우 Voice Over IP를 위해 사용
Protocol | Port Number | Description |
---|---|---|
IUA | 9990 | ISDN over IP |
M2UA | 2904 | SS7 telephony signaling |
M3UA | 2905 | SS7 telephony signaling |
H.248 | 2945 | Media gateway control |
H.323 | 1718,1719,1720,11720 | IP telephony |
SIP | 5060 | IP telephony |
Multiple-stream Concept
유저가 여러명일 경우 유저 별로 스트림 구분 가능 (TCP의 경우 통째로)
- 왜 SCTP?
- 만약 여러명이 TCP로 데이터를 묶어 보내면 한 명만 누락되도 막히기 때문 (Head of line blocking)
- TCP는 Connecton이라 하지만 SCTP는 Association 이라함, 한 Association이 여러 스트림을 가질 수 있음
Multihoming Concept
Multihoming이란 한 기기가 여러 IP를 가질 수 있다는 것을 뜻함 (라우터 여러 개일 경우)
- 각 Gateway가 Home이라고 할 수 있음
- 평상시에는 하나(Primary path)만 쓰다가 Failure가 일어나면 Backup path 사용
- VOIP는 실시간 서비스가 가능해야함 = Reliable + Real-time (Mission Critical)
SCTP Features
TSN (Transmission Sequence Number)
SCTP에서 데이터 Chunk는 TSN으로 넘버링됨, Association 안의 모든 Stream의 Chunk에 대해 넘버링
- Association 별로 따로 존재
- 패킷 안에 Chunk 여러 개
- Control, Data Chunk 따로 존재
SI (Stream Identifier)
서로 다른 Stream 끼리 구분을 위해 SI 사용
SSN (Stream Sequence Number)
같은 Stream 안의 데이터 Chunk 구분을 위해 SSN 사용
TCP Segment와 SCTP Packet 비교
SCTP 패킷의 경우 기본 헤더는 12byte,
- Verification tag는 보안 향상을 위해
- Checksum은 CRC 사용
- SCTP는 Control 정보와 Data 정보가 서로 다른 Chunk에 들어가 있음
- SCTP 패킷에서 Control chunk는 Data chunk 전에 나옴
Packets, Data Chunks, Streams
Data chunk는 TSN, SI, SSN 세 가지를 통해 구분됨
Acknowledgment Number
SCTP에서 ACK number는 Data chunk에 대해 ACK하기 위해서만 사용. Control chunk는 다른 Control chunk에 의해 ACK
Packet Format
SCTP의 패킷은 필수인 헤더와 Chunk라 불리면 몇몇 블락들로 구성됨. Chunk는 크게 Control, Data chunk로 나뉨
- 패딩에 대한 byte들의 갯수는 Length field에 포함되지 않음
Header Layout
Chunk Layout
4byte 단위로 끊겨야함
Chunk 종류
Type | Chunk | Description |
---|---|---|
0 | DATA | 사용자 데이터 |
1 | INIT | Association 셋업 |
2 | INIT ACK | INIT chunk에 대한 ACK |
3 | SACK | Selective ACK. |
4 | HEARTBEAT | Peer가 살아있는지 (Backup path) |
5 | HEARBEAT ACK | HEARTBEAT chunk에 대한 ACK |
6 | ABORT | Association 중단 (TCP의 Reset), Critical |
7 | SHUTDOWN | Association 종료 |
8 | SHUTDOWN ACK | SHUTDOWN chunk에 대한 ACK |
9 | ERROR | Shutdown하지 않고 에러 리포트 |
10 | COOKIE ECHO | Association eatablishment의 세 번째 패킷 |
11 | COOKIE ACK | COOKIE ECHO chunk에 대한 ACK |
14 | SHUTDOWN COMPLETE | Association termination에 세 번째 패킷 |
192 | FORWARD TSN | 누적된 TSN 조정 위해 |
DATA Chunk
한 메시지 이상의 데이터를 Chunk에 넣을 수는 없음. 하지만 한 메시지가 여러 개의 Chunk로 나뉘는건 가능. data 필드에 최소 1바이트 이상의 데이터 보내야함 (최소 Length = 17byte (16헤더 + 1데이터))
INIT Chunk
INIT chunk를 가지는 패킷에 다른 Chunk를 넣으면 안됨
INIT ACK Chunk
INIT ACK chunk를 가지는 패킷에 다른 Chunk를 넣으면 안됨
COOKIE ECHO Chunk
COOKIE ACK Chunk
SACK Chunk
HEARTBEAT / HEARBEAT ACK Chunk
SHUTDOWN Chunks
ERROR Chunk
Errors | |
---|---|
Code | Description |
1 | SI 이상 |
2 | 필수 파라미터 없음 |
3 | State cookie 에러 |
4 | Out of resource |
5 | 가져올 수 없는 주소 |
6 | Chunk type 이상 |
7 | 필수 파라미터 이상 |
8 | 인식 불가능한 파라미터 |
9 | User data 없음 |
10 | 종료 도중 쿠키 도착 |
ABORT Chunk
SCTP Association
SCTP도 TCP와 마찬가지로 연결지향 프로토콜. 하지만 SCTP에서는 Connection을 Multihoming을 잘 나타내기 위해 Association 이라함
- SCTP에서는 Data chunk만 TSN을 소모하고, Data chunk만 ACK를 받을 수 있음
Four-way Handshaking
제대로된 Cookie인지 확인 (인증 절차)
- TCP에서 Sync attack (DDOS) 완화 (Sync를 한 번에 여러개 보내면 Sync마다 리소스 할당하기 때문)
Data Transfer
SCTP의 ACK는 누적된 TSN에 대한 ACK. 순서대로 받은 마지막 TSN을 뜻함
Association Termination
Association Abortion
State Transition Diagram
Common Scenario
Simultaneous Open
Simultaneous Close
Flow Control
SCTP의 Flow control은 TCP와 유사. 하지만 SCTP에서는 Byte와 Chunk 두 개에 대해 컨트롤 필요. rwnd(Receiver Window)와 cwnd(Sender Window)는 Byte control에 사용하고, TSN과 ACK는 Chunk control에 사용
Receiver Site
Sender Site
Flow Control Scenario
Error Control
SCTP도 TCP와 같이 신뢰성 있는 프로토콜. SCTP는 SACK를 통해 수신자의 버퍼 상태를 송신자에게 보냄
Receiver Site
Sender Site
- SACK 받기 전
- SACK 받은 후
Congestion Control
TCP와 같은 전략 사용, Slow-start, Congestion avoidance, Congestion detection. TCP와 마찬가지로 Fast retransmission과 Fast recovery 사용
Introduction to the Application Layer
Client-Server Paradigm
네트워크의 목적은 사용자에게 서비스를 제공하는 것. 이를 간단하게 나누면 서비스를 제공해주는 서버, 서비스를 받는 클라이언트로 정의 가능
Server Types
- Iterative : 우선적으로 오는 패킷들에 대해 순차적 반복적으로 응답 줌 (하나의 큐)
- Concurrent : 동시에 여러 개의 패킷들을 처리 (여러 개의 큐, 보통 클라이언트 하나 당 하나)
Interface
인터페이스는 두 객체 (Entity) 간의 상호작용을 위해 디자인된 Instruction 들
OS, Process
Socket interface와 Application 레이어는 Process 단, OS는 Kernel 단
Concepts of Sockets
Socket Data Structure
Socket Types
IPv4 Socket Address
UDP Connectionless Iterative
Connection-oriented Concurrent
Peer-to-Peer Paradigm
P2P (토렌트 등). 여러 대의 PC가 서로 서비스를 제공
DHCP (Dynamic Host Configuration Protocol)
TCP/IP Protocol suite를 사용하는 모든 기기는 서로의 IP 주소, Subnet mask, Default 라우터 주소, DNS서버 주소를 알아야함. DHCP는 IP주소를 동적으로 할당해줌
DHCP Operation
DHCP 서버와 클라이언트는 서로 같거나 다른 네트워크에 존재 가능
Same Network
주소 비트가 모두 0 면 주소 모른다는 말이고, 주소 비트가 모두 1이면 브로드캐스트
Different Network
에이전트가 서버로 Request를 포워딩해줌
UDP Port 사용
DHCP는 Well-known 포트인 68, 67 번 UDP 포트 사용
- 68은 클라이언트 쪽, 67은 서버 쪽
DHCP Packet Format
DHCP에 필요한 정보 대부분은 Option에 있음
- Flags 첫 비트만 사용, 0면 유니캐스트, 1이면 브로드캐스트
DHCP Options
Configuration
정적(Static), 동적(Dynamic) 주소 할당(Allocation) 지원
- 클라이언트는 DHCP 서버에게 주소를 잠시 빌린 것이므로 Realse Time-out 발생 시 다시 요청 필요
DNS (Domain Name System)
Need For DNS
IP주소로 기기를 인식하지만 사람은 숫자로된 IP 주소보단 글로 구성된 주소를 선호하므로, 이름과 주소를 맵핑해주는 시스템을 DNS라 함 (111.111.111.111 => www.111.com)
Name Space
이름도 IP 주소와 같이 유일해야 함. Flat, Hierarchical(계층적)으로 관리
Domain Name Space
Domain Names and Labels
FQDN, PQDN
- FQDN (Full Qulified Domain Name)
- PQDN (Partial Qulified Domain Name) : 같은 도메인일 경우
Domains
Hierarchy of Name Servers
Root Server는 전세계 10개 정도
- 세계, 미국의 경우 .com
- 우리나라는 .kr 등
Zones and Domains
- Primary 서버가 모든 정보를 디스크로 부터 읽고, Secondary 서버는 Primary 서버의 모든 정보를 로드함
- Zone transfer : Secondary 서버가 모든 Primary 서버의 정보를 다운 받는 것
DNS in the Internet
Internet에서는 Generic, Counry, Inverse 세개의 도메인으로 나눠짐
- Inverse 도메인 : IP를 도메인 이름으로
- Generic 도메인 : .com, .edu, .org, .gov, .net 등
- Country 도메인 : .us, .kr, .uk 등
Resolution
이름을 주소에, 주소를 이름에 맵핑하는 것을 Name-address resolution 이라 함
Recursive Resolution
Iterative Resolution
DNS Messages
Query, Response 두 메시지 있음. 둘 다 포멧은 같음
- 단위는 Record
Message Format
Header Format
Types of Records
Question Record Format
Query Name Format
Query Types
Query Class
Resource Record Format
Answer, Authoritative, Additional Section의 포멧
Compression
Domain 이름이 반복된다면 Offset Pointer로 대체해서 DNS 표현 간소화 가능
Encapsulation
DNS는 UDP나 TCP 둘 다 사용 가능
- 53번 포트 사용
- 512byte 이하면 UDP 초과면 TCP 사용
Registraras
ICANN에 속한 Registrar (등록 해주는 시스템)에 의해 등록
DDNS
Dynamic DNS, DNS는 보통 등록에 3 ~ 4일이 걸리지만 DDNS는 바로 등록 가능
Security of DNS
IETF가 DNSSEC(DNS Security) 기술 만듬. 디지털 서명을 통해 메시지 인증 및 무결성 검증
Round Robin
웹 주소에 대응하는 서버가 로드 밸런싱을 위해 다수 존재하며, 요청마다 해당 서버 들에게 번갈라가며 DNS 서버에서 요청을 하는 방식을 Round Robin 방식이라 한다.
- 서버 수 만큼 공인 IP 주소가 필요하다.
TELNET and SSH(Remote Login)
TELNET
TErminal NETwork. ISO에서 제안한 가상 터미널 서비스. 원격 터미널 접속 가능
Secure Shell
SSH (Secure Shell) TELNET과 유사. TCP를 이용한 Transport 프로토콜. TELNET 보다 안전하고 많은 서비스 지원
- Secure Connection
FTP, TFTP (File Transfer)
FTP
TCP/IP 프로토콜에서 파일을 호스트에서 다른 호스트로 복사하는 방법 제공
- 두 시스템이 서로 다른 파일 이름 형식 사용 중일 수 있음
- 두 시스템이 서로 텍스트나 데이터를 표현하는 형식이 다를 수 있음
- 두 시스템이 서로 다른 폴더 구조를 가질 수도 있음
- FTP는 위의 문제를 간단한 방법으로 해결
TCP Connection
FTP는 TCP 연결 사용. Well-known 포트인 21번 포트를 컨트롤 용으로, 20번 포트를 데이터 전송용으로 사용 (두 개의 소켓이 열림)
Control Connection
Data Connection
Using Control COnnection
표준 아스키코드를 이용하여 컨트롤
Using Data Connection
Command
서버가 클라이언트에게 커맨드 보낼 수는 없음 (FTP 서버는 수동적)
Access Commands
Command | Argument | Description |
---|---|---|
USER | User id | 사용자 정보 |
PASS | User password | 비밀번호 |
ACCT | Account to be charged | 계정 정보 |
REIN | 재시작 | |
QUIT | 시스템에서 로그아웃 | |
QBOR | 이전 커맨드 무시 |
File Management Commands
Data Formatting Commands
Port Defining Commands
File Transfer Commands
Micellaneous Commands
Response
100, 300 임시, 200 Passive
오류
File Transfer
Example
TFTP
간단하게 파일 복사 시 이용. 예를 들어 디스크가 없는 워크스테이션이나 라우터 부팅 시 Bootstrap을 다운 받아야 하는데 이때 다른 기능 없이 단순히 파일 복사 기능만 필요할 경우 TFTP 사용
- UDP 포트 69번 사용
Message Types
-
RRQ : Read Request
-
WRQ : Write Request
-
DATA : 데이터 전송
-
ACK
-
Error
DHCP 관리
DHCP 관리를 위해 TFTP 사용하기도 함
WWW (World Wide Web) and HTTP (Hypertext Transfer Protocol)
Architecture
최근의 WWW는 분산된 클라이언트-서버 서비스를 제공해줌. 클라이언트는 브라우저를 통해 서버의 서비스를 제공 받을 수 있음. 하지만 너무 많은 사이트가 분산 되어 있음.
Transaction
- 각각의 페이지는 독립적이지만, 페이지 내의 링크를 통해 다른 페이지를 접근 가능
- 각각의 다른 페이지도 바로 접근 가능
- Request, Response 한 페어를 Transaction 이라 함
Browser
URI
- 클라이언트 프로그램은 URI(Uniform Resource Identifier)로 자원의 위치를 찾는다. HTTP는 전송 프로토콜, URI는 자원의 위치를 알리기 위한 프로토콜이다. 자원은 이미지, 영상, 텍스트, 프로그램 등 모든 데이터라고 보면 된다.
- URI : 정보 리소스를 고유하게 식별하고 위치를 지정하는 우편 주소 같은 역할
- URL(Uniform Resource Locator) : 특정 서버의 한 리소스에 대한 구체적인 위치 서술
- http://naver.com : 네이버 사이트 메인 URL
- http://img.naver.net/static/www/dl_qr_naver.png : 네이버 QR 앱 코드 이미지 URL
- URN(Uniform Resource Name) : 어떠한 리소스에 대해 위치에 영향을 받지 않는 유일무이한 이름 지정
- urn:ietf:rfc:2141 : ‘RFC 2141’ 문서
- URN의 경우 아직 채택되지 않았기 때문에 접할 기회가 별로 없음
- URN은 URL의 단점을 보완하기 위해 나왔다. URL의 경우 도메인 주소가 바뀌거나 위치가 바뀌면 동시에 해당 URL은 잘못된 정보를 가리키거나, 잘못되 주소가 되는 등 단점이 있어 이를 보완하기 위해 URN을 만들었다.
- URL(Uniform Resource Locator) : 특정 서버의 한 리소스에 대한 구체적인 위치 서술
Web Documents
WWW의 문서들은 크게 Static, Dynamic, Active 세가지로 볼 수 있음. 각각의 종류는 문서의 컨텐츠가 정해지는 시간이라 볼 수 있다
- 정적(Static) : 있는 내용 그대로 받아옴
- 동적(Dynamic) : 서버에서 프로그램을 이용해 내용을 바꾼 다음 전송
- 능동적(Active) : 서버에서 작은 프로그램을 클라이언트에 전송해주면 클라이언트가 처리
Static Document
웹페이지 내용이 그대로 옴 (바뀌지 않음)
CGI를 이용한 Dynamic Document
요청 시 프로그램에 의해 내용이 동적으로 정해짐 (내용이 수시로 바뀜)
- CGI (Common Gateway Interface)
Server-site Script를 이용한 Dynmic Document
HTML 문서 안의 스크립트를 돌려서 보냄 (ASP, JSP 등)
Document 종류들
Type | Discription |
---|---|
HTML | |
XML | |
XSL | |
XHTML |
Active Documnet using Java applet, JavaScript
서버가 작은 프로그램을 던져주면 클라이언트가 프로그램을 돌려서 처리
HTTP
HTTP(Hypertext Transfer Protocol)은 WWW에서 데이터에 접근하기 위한 주된 프로토콜. FTP와 SMTP를 합친 것 처럼 작동함. FTP 처럼 파일을 전송하고, TCP 서비스를 이용. 하지만 FTP 보다 간단하게 하나의 TCP 연결만 사용. 오직 클라이언트와 서버 사이의 데이터 송수신만을 고려 (컨트롤 소켓 따로 열지 않음)
- TCP 80번 포트 사용
- 데이터를 전송하는데 Hypertext기반으로 전송하겠다고 해서 HTTP라는 이름이 지어졌다.
- Hypertext는 쉽게 말해 링크(URL 또는 URI)로 볼 수 있다.
- 클라이언트/서버 모델을 따른다.
- Connectless : 요즘은 connection-oriented 방식이 쓰이기도 하지만, 기본적으로 Connectless라서 요청 시 접속을 하고 응답을 보낸 후 접속이 끊어진다. 불특정 다수를 대상으로 하는 서비스에서는 접속 유지를 최고한으로 할 수 있기 때문에 장점이 될 수 있지만, 연결이 끊어지면 클라이언트의 이전 상태를 서버가 알 수 없는 (Stateless) 단점이 있다. 보통 이를 쿠키나 세션을 이용해 관리한다.
HTTP Transaction
사람이 읽을 수 있는 텍스트로 내용이 채워져 있음
- 클라이언트 : 크롬, 인터넷 익스플로러, 파이어 폭스 등 클라이언트 소프트웨어를 이용해 서버에 URI로 접속 및 데이터를 요청하는 PC
- 서버 : 각종 포탈 사이트 등의 서버. 클라이언트 요청을 받아 해석하고 응답을 한다. Apache 등의 서버 소프트웨어가 설치되어있다.
Request Message Format
Methods
Method | Action |
---|---|
GET | 클라이언트가 서버에 문서 요청 |
HEAD | 문서에 대한 정보 요청 (문서 자체는 아님) |
POST | 클라이언트가 서버에 문서 업로드 |
PUT | 클라이언트가 서버의 문서 수정 (대부분) |
PATCH | 클라이언트가 서버의 문서 수정 (일부분) |
TRACE | 현재 오는 요청 그대로 에코 |
CONNECT | (예약) |
DELETE | 웹 문서의 문서 삭제 |
OPTIONs | 서버가 지정한 문서에 대해 어떤 기능과 옵션을 제공하는지 조회 |
- CRUD (Create Read Update Delete)
- HTTP에서 CRUD를 지키자는 말이 있는데 이는 Create Read Update Delete의 약자로 각각 POST, GET, PUT, DELETE 명령과 매칭된다.
Request Header Names
Response Message Format
Status Codes and Status Phrase
- 100번대 : 조건부 응답
- 200번대 : 성공
- 300번대 : Redirection, 다른 페이지로 이동시키거나, 문서가 이동됨
- 400번대 : 오류
Response Header Names
Example
Nonpersistent Connection
- TCP를 이용해 전송
- 같은 사이트지만 계속 연결해야함
Persistent Connection
HTTP version 1.1의 경우 일정시간 안에 Transaction이 있으면 영구적으로 접속되게 해줌
- Keep-alive 기능을 지원함
쿠키 (Cookie)
HTTP 자체가 Stateless로 클라이언트의 상태를 서버가 알지 못하기 때문에 쿠키로 클라이언트 로컬에 키와 값등 데이터 들을 저장해 놓고 참조한다. 클라이언트는 쿠키를 사용자가 따로 요청하지 않아도 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다. 브라우저가 닫히더라도 쿠키는 파일 형태로 남아있다.
- 자동 로그인, 장바구니 등에서 사용
- 클라이언트는 쿠키를 300개까지 가질 수 있고, 하나의 도메인당 20개의 값만 가질 수 있음
- 하나의 쿠키 값은 4kb까지 저장
세션 (Session)
일정 시간동안 같은 브라우저에서 들어오는 일련의 요구를 하나의 상태로 보고 상태를 유지하는 기술. 클라이언트가 서버에 Request를 보내면 서버가 클라이언트에게 유일한 ID를 부여하게 되는데 이걸 세션 ID라고 한다. 쿠키와 다르게 세션은 서버에 저장된다. 브라우저가 닫히면 세션도 종료된다.
- 클라이언트가 서버에 접속을 하면 서버가 세션 ID를 발급해서 클라이언트에 전송
- 서버에서 세션 ID를 쿠키를 통해 저장
- 클라이언트는 다시 접속할 경우 쿠키를 이용하여 세션 ID를 서버에 전송
- 로그인 정보 유지
세션과 쿠키의 차이
- 라이프 사이클 : 세션은 브라우저가 닫히면 끊기고, 쿠키는 파일 형태로 남아 있음
- 보안 : 쿠키가 클라이언트에 저장되는데 비해, 세션은 서버에 저장되기에 좀 더 안전함
- 속도 : 쿠키는 클라이언트에서 서버로 보내기만 하면되지만, 세션은 서버에서 처리 후 클라이언트로 보내야하기 때문에 좀 더 느림
- 캐시와는 다름 : 캐시는 브라우저 내에서 CSS, 이미지 등을 캐싱하고 있다가, 같은 요청이 오면 브라우저를 참고해서 불러오기 때문에 데이터 절약효과를 내고 속도를 빠르게하지만, 이는 쿠키나 세션과는 다름
HTTPS
HTTPS는 Hypertext Transfer Protocol over Secure Socket Layer의 약자이다. HTTP 프로토콜에서 보안상 취약점을 보강한 프로토콜을 HTTPS라 한다. HTTPS는 모든 통신 내용을 암호화한다.
- HTTP가 TCP 80번 포트를 쓰는 것에 비해, HTTPS는 TCP 443번 포트를 이용한다.
- HTTPS는 SSL(Secure Socket Layer) 위에서 이루어지는 HTTP라 생각하면됨
- SSL은 TLS(Transport Layer Security)라 볼 수 있는데, 넷스케이프에서 SSL을 개발하고, 국제 표준화 기구 IETF로 넘어가면서 TLS로 이름이 바뀜
- SSL은 Presentation 레이어이다.
- HTTPS는 HTTP에 비해 속도가 많이 느리기 때문에, 민감한 정보를 다루는 페이지는 HTTPS로 속도가 중요한 페이지는 HTTP로 전송하기도 한다.
- HTTPS에서 SNI로 호스트 이름을 알 수 있는 이유 sokoban님 블로그 참고
HTTP 1.1, HTTP 2.0
- HTTP 1.1의 경우 기본적으로 한 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송 문제와, 다수 리소스 처리하기에 성능 이슈를 가지고 있다. 이 때문에 HOL(Head Of Line) Blocking; 스트림의 첫 패킷의 처리 과정이 느려짐에 따라 뒤의 패킷들 처리도 느려지거나, RTT(Round Trip Time) 증가, Header구조가 무거운 단점이 있다. HTTP 2.0은 이를 해결하기 위해 Multiplexed Streams (한 커넥션에 여러 개의 메세지를 동시에 주고 받음), Stream Prioritization (요청 리소스 간 우선 순위 설정), Header Compression (Header 정보를 HPACK 압축 방식으로 압축 전송)을 사용하여 성능을 획기적으로 향상 시킴.
Electronic Mail : SMTP, POP, IMAP, MIME
Architecture
First Scenario
만약 송수신자가 같은 메일 서버를 이용한다면 두 개의 사용자 에이전트만 있으면 됨
Second Scenario
만약 송수신자가 다른 메일 서버를 이용한다면 두 개의 사용자 에이전트와 한 쌍의 MTA (Message Transfer Agent)가 필요
- 1990년대
Third Scenario
송신자가 LAN이나 WAN으로 메일 서버에 연결되어있다면, 두 개의 사용자 에이전트와 두 쌍의 MTA가 필요
- 2000년대
Fourth Scenario
송수신자 모두가 메일 서버에 LAN이나 WAN으로 연결되어 있으면, 두 개의 사용자 에이전트, 두 쌍의 MTA, 한 쌍의 MAA (Mesage Access Agent)가 필요
- 요즘
Push / Pull
User Agent
UA. 사용자가 메시지를 보내고 받는 과정을 쉽게 만들어줌
- Command-driven UA : mail, pine, elm
- GUI-based UA : Outlook, Eudora, Netscape
Email Format
Email Address
Message Transfer Agent
실제로 메일 전송은 MTA를 통해서 일어남. 메일을 보내기 위해서 시스템은 클라이언트 MTA를 가지고 있어야하고, 메일을 받기 위해서는 서버 MTA를 가지고 있어야함. MTA를 위한 일반적인 프로토콜을 SMTP (Simple Mail Transfer Protocol) 이라함.
SMTP Range
Commands and Responses
Commands
Responses
Connection Establishment
Messsage Transfer
Connection Termination
Message Access Agent
SMTP는 Push용 프로토콜이라 MAA에서 쓰이지 않음 (MAA는 Pull하기 때문). Pull 프로토콜인 POP3와 IMAP4 사용
POP3 and IMAP4
POP3
MIME
원래 E-mail은 구조가 간단해서 NVT 7-bit ASCII 포맷만 전송가능해서 한계점이 있음. 하지만 MIME (Multipurpose Internet Mail Extensions)는 ASCII 데이터가 아닌 데이터도 E-mail로 전송 가능하게함. MIME는 송신자 측에서 데이터를 NVT ASCII 데이터로 변환 후 MTA를 이용해 전송. MAA로 데이터를 받으면 다시 원래 데이터로 변환
MIME
MIME Header
Data Types and Subtypes
Content Transfer Encoding
Base64
Quoted Printable
Web-based Mail
웹을 이용해 이메일 서비스 제공 (HTTP). Google, Yahoo, Hotmail 등
Case 1
Case 2
E-mail Security
PGP (Pretty Good Privacy), SMIME (Secure MIME) 프로토콜 있음
SNMP (Simple Network Management Protocol)
Concept
Manager, Agent를 컨셉으로 잡음. 매니져(Host)가 에이전트(Routers, Servers)를 컨트롤하고 모니터링
Management Components
관리(Management)를 위해 두 가지 프로토콜 사용. SMI (Structure of Management Information), MIB (Management Information Base)
- 인터넷의 관리는 SNMP, SMI, MIB 를 이용함
- SMI(구조)와 MIB(정보)가 망관리 서포트
- SNMP 는 매니저와 에이전트 사이의 패킷 포맷을 정의하고, SNMP 패킷의 객체들의 상태를 읽고 바꿈
- SMI 는 객체 네이밍, 객체 타이핑, 객체와 값들의 인코딩에 대한 형식 정의
- MIB 는 이름이 붙은 객체들과, 그들의 타입, 그리고 객체 상호간의 관계에 대해 만듬
Management Overview
SMI
- Name : 객체들의 네이밍
- Data Type : 객체들에 저장 가능한 데이터 타입 정의
- Encoding Method : 네트워크로 전송하기 위해 데이터 인코딩 방법 보여줌
MIB
각 에이전트가 MIB를 가지고 있음. MIB 안에는 매니저가 관리할 수 있는 오브젝트들이 모여있음.
- MIB 객체들의 카테고리 : System, Interface, Address trnslation, IP, ICMP, TCP, UDP, EGP, Transmission, SNMP
SNMP
SMI와 MIB를 가지고 네트워크 관리르를 하는 Application 프로그램
- 에이전트에 정의된 객체의 값을 가져옴
- 에이전트에 정의된 객체에 값을 저장
- 에이전트는 에러 상황일 때 알람 메시지를 매니저에게 보냄
- 클라이언트(매니저)는 UDP 포트 162번, 서버(에이전트)는 161번 사용
SNMP PDUs
Trap은 에이전트가 알아서 보내는 것
SNMP PDU Format
PDU Types
Error Types
SNMP Message
Multimedia
Introduction
Internet Audio/Video
- Streaming stored audio/video = VOD (저장)
- Streaming live audio/video = TV (버퍼링)
- Interactive audio/video = 화상통화 (실시간)
Digitizing Audio/Video
오디오, 비디오 시그널을 디지털화(Digitized)해야 이너넷으로 전송 가능
- 비디오 전송을 위해서는 압축이 필수
Audio and Video Compression
JPEG Compression
Streaming Stored Audio/Video
Web Server
Web Server + Metafile
Media Server
Media Server + RTSP (Real Time Streaming Protocol)
Streaming Live Audio/Video
Multicast + Live
Real-Time Interactive Audio/Video
인터넷폰, VOIP (Voice Over IP)
Jitter
패킷 전송 딜레이가 각각 다름. Playback 버퍼링 사용
Real-Time 필요 요소
- 멀티캐스팅 필요
- TCP는 느리고 Retransmission 허용 해줄 수 없기 때문에 UDP 사용
- RTP 사용
RTP
RTP (Real-time Transport Protocol). UDP와 함께 사용 (전달 매커니즘(멀티캐스팅, 포트 번호 등)이 없기 때문)
- 짝수 UDP 포트 사용
RTCP
RTCP (Real-time Transport Control Protocol) 흐름 제어와, 품질 보증
- Sencder/Receiver Report로 수시로 확인
- 홀수 UDP 포트 사용
VOIP
SIP, H.323 사용
IPv6 Addressing
Introduction
128bit (16byte) 크기를 가짐
-
Colon, Hexadecimal notation 사용
FDEC:BA98:7654:3210:ADBF:BBFF:2922:FFFF
Zero Compression
0을 압축 가능 (하나만)
FDEC:0:0:0:0:BBFF:0:FFFF
=> FDED::BBFF:0:FFFF
CIDR Address
FDEC::BBFF:0:FFFF/60
Address Space Allocation
- 정의 되지 않은 주소는 ::/128 (모두 0, IPv4와 비슷)
- Loopback 주소는 ::1/128 (IPv4 127.0.0.1)
- IPv4 Tenneling ::X:Y:Z:W
Compatiable Address
v4, v6 호환
Mapped Address
v4, v6 transmission 시 (바꿔줘야 할 때)
Unique Local Unicast Address
한 Domain에서 Unique한 주소
- Interface ID (MAC ID 48bit + 16bit)
Link Local Address
서브넷 상의 로컬 주소
Multicast Address
Global Unicast Addresses
인터넷 상에 있는 두 호스트간 유니캐스트 커뮤니케이션용 주소
- 2000::/3 (001)
- Three Levels of Hierarchy (Aggregation 쉬워짐)
- IPv6의 경우 지역별로 나눠줘서 IPv4 보다 구분이 쉬움
Global Unicast Address
- Global routing prefix (48bit) : 기관
- Subnet identifier (16bit) : 서브넷
- Interface identifier (64bit) : 랜카드 (MAC)으로 자동으로 정해짐
EUI-64
EUI 인터페이스라면 한비트만 바꿔 Interface identifier로 사용
Ethernet MAC
이더넷이라면 아래와 같이 바꿔 Interface identifier로 사용
Autoconfiguration
컴퓨터 스스로 주소를 만듬. IPv4 처럼 DHCP를 이용해 받아올 수도 있지만 호스트 자체가 생성도 가능
- eg) 이더넷 주소가 $(F5-A9-23-11-9B-E2)_ {16}$이라면 Interface identifier는 F7A9:23FF:FE11:9BE2 임
Renumbering
사이트가 서비스 제공자를 바꾸는 것을 허용하기위해 주소의 Prefix를 바꾸는 것을 IPv6에서는 허용함
IPv6 Protocol
Packet Format
필수적인 헤더 그리고 Payload로 구성됨. Payload에는 추가적인 Extension 헤더와(없어도됨), 위 레이어에서 온 Data가 포함. 필수 헤더는 40byte, Extension 헤더와 Data는 65535바이트까지 가질 수 있음
IPv6 Datagram
Base Header Format
이름 | 설명 |
---|---|
VER | 버전 |
Traffic Class | IPv4의 Service Type과 동일(Reliable등), 잘안씀 |
Flow label | 20bit, 소켓의 Flow (송수신 IP Port + Protocol) |
Payload length | Total length와 유사 |
Next header | Extension 헤더나 Data도 가능 |
Hop limit | Hop count (TTL) |
Source address | 16byte |
Destination address | 16byte |
Next Header Codes
Extension Header Format
- 헤더 타입별로 포멧은 다름
Extension Header Types
Transition from IPv4 to IPv6
인터넷이 너무 크기 때문에 IPv4에서 v6로 바로 넘길 수는 없음
Three Transition Strategies
Dual Stack
IPv4, IPv6 둘 다 지원 가능하게
Tunneling
Header Translation
헤더 자체를 바꿔서 통신
ICMPv6
Introduction
ICMPv4와 기본적으로 비슷함. 하지만 ICPMv6에서 IGMP, ICMP, ARP가 합쳐져 ICMP가 됐음
ICMPv6
Error Messages
IPv4와 거의 유사
- Destination unreachable (=ICMPv4) : Type 1, Code 0 ~ 6
- Packet too big (= Source quench) : Type 2, Code 0
- Time exceeded (=ICMPv4) : Type 3, Code 0 or 1
- Parameter problems (=ICMPv4) : Type 4, Code 0 ~ 2
Informational Messages
IPv4의 쿼리문
- Echo request/reply (=ICMPv4) : Type 128, 129, Code = 0
Neighbor Discovery Message
ND (Neighbor Discovery) 프로토콜, IND (Inverse Neighbor Discovery) 프로토콜, IPv4의 ARP와 역할이 같음
- Router-Solicitation Message : 호스트가 라우터를 찾음, Type 133, Code 0
- Router-Advertisement Message : 라우터가 호스트에게 알려줌, Type 134, Code 0
- Neighbor-Solicitation Message : IP->MAC, Type 135, Code 0
- Neighbor-Advertisement Message : Type 136, Code 0
- Redirection Message : ICMPv4 쿼리의 Redirection, Type 137, Code 0
- Inverse-Neighbor-Solicitation Message : MAC->IP, Type 141, Code 0
- Inverse-Neighbor-Advertisement Message : Type 142, Code 0
Group Membership Message
MLD (Multicast Listener Discovery) 프로토콜, IPv4의 IGMP와 거의 비슷, 사이즈만 달라짐 (IPv6 쓰므로)
- Membership-Query Message : 라우터->호스트, Type 130, Code 0
- Membership-Report Message : 호스트->라우터, Type 143, Code X
웹 통신의 큰 흐름
브라우저에서 URL을 입력한 뒤 일어나는 일들
브라우저
- URL에 입력된 값을 브라우저 내부의 규칙에 따라 의미 조사
- 조사된 의미에 따라 HTTP Request 메시지 생성
- 만들어진 메시지를 웹 서버로 전송
- 이 때 만들어진 메시지를 웹 서버로 브라우저가 직접 전달하는 것이 아닌 OS 커널 함수를 통해 전달한다.
- DNS 서버를 조회하여 IP 주소를 알아온다.
프로토콜 스택, LAN 어뎁터
프로토콜 스택이란 TCP/IP Protocol suite의 5 계층(Application, Transport, Network, Data-link, Physical)을 말한다.
- 프로토콜 스택(OS의 내장 네트워크 제어 SW)이 브라우저로 부터 메시지를 받는다.
- Transport Layar에서는 Port 번호 등 정보를 붙여 TCP Segment 패킷으로 변환한다. (HTTP이므로 TCP 80번 포트 사용)
- Routing Table을 이용하여 다음 Hop(라우터나 허브)의 IP 주소를 알아낸다.
- ARP를 통해 보내야할 라우터의 MAC 주소를 알아와 패킷을 Frame으로 변환함.
- MTU 테이블을 참조하여 패킷을 Fragmentation 하고 패킷을 송신한다.
- Physical 레이어의 기계적 요소들을 통해 Frame을 Bit 전기 신호로 변환하여 LAN 케이블을 통해 신호를 송신한다.
허브, 스위치, 라우터
- LAN 어댑터가 송출한 패킷이 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
- 라우터는 라우팅 테이블을 보고 다음 Hop의 IP 주소를 알아낸다.
- 이후 라우터는 ARP를 통해 다음 IP 주소에 해당하는 MAC 주소를 알아온다.
- MTU 테이블을 참조하여 패킷을 Fragmentation 하고 패킷을 송신한다.
- 이후 패킷을 스위칭 허브 등을 통해 ISP(Internet Service Provider)에게 전달하게되면, 패킷이 인터넷으로 송신되게 된다.
액세스 회선, 프로바이더
- 패킷은 인터넷 입구의 액세스 회선에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
- POP를 거쳐 인터넷 핵심부로 패킷이 이동한다.
- 다수의 라우터를 거쳐가며 목적지까지 패킷이 전송된다. (라우팅과 포워딩)
방화벽, 캐시서버
- 패킷은 원래 목적지인 웹서버의 LAN에 도착한다.
- 웹 서버의 방화벽이 도착한 패킷을 검사한다.
- 중간에 패킷이 웹서버까지 가야하는지 가지 않아도 되는지 판단하는 캐시서버가 존재한다.
웹 서버
- 패킷이 물리적인 웹 서버에 도착하면 프로토콜 스택을 따라 웹 서버의 어플리케이션 프로그램에 패킷이 전달된다.
- 웹 서버에서 패킷을 받으면 Network 레이어에서 먼저 패킷이 Valid한지 검사한 후 Valid하지 않으면 패킷을 버리고, 그렇지 않다면 디팩키징하고 Fragment들을 저장해 놓는다. 그 후 모든 Fragment가 도착하면 Fragment를 합쳐 Transport 레이어에 전달해준다. 만약 이 과정에서 Reassembly timer가 다된다면 모든 패킷을 버린다.
- Transport 레이어에 도착한 패킷은 TCP의 역할에 따라 패킷을 Checksum으로 검사하고, Error, Flow, Congestion 컨트롤을 수행한다. 만약 모든 패킷이 올바르게 왔다면 패킷을 Application 레이어로 올린다.
- Application 레이어에서는 실제 프로그램이 해당 패킷을 받아 사용한다.
- 원래 요청이 왔던 브라우저에게 다시 HTTP Response 메시지를 보낸다. 이때 이전 과정과 동일하게 전송된다.