728x90
인터넷 서비스 모델
- internet : 인터네트워크를 위한 서비스. 모든 것이 전화와 반대.
- 인터네트워크
- 네트워크의 연속
- Concatenation of Networks
- 네트워크 계층 위에서 표준화
- 다양한 네트워크들을 링크(link)로 간주해서 그대로 사용 (이질적 네트워크 연결)
- 전역 주소 체계 (Global Addressing Scheme) 필요
- 프로토콜 스택
패킷 전달 서비스 모델
- 전역 주소 체계 (Global Addressing Scheme)
- 비연결성 (데이터그램 - 기반)
- 최선 노력 전달 (신뢰성 없는 서비스 - 안 가면 말고 식) - best-effort
- 패킷이 손실될 수 있다.
- 패킷이 순서가 바뀌어 전달될 수 있다.
- 중복된 패킷이 올 수 있다.
- 패킷이 오랜 시간 지연될 수 있다.
- 단편화 및 재조립
- 서로 다른 크기의 패킷이 전달된다. (네트워크마다 크기 표준이 다름)
- 패킷의 크기를 맞춰서 잘라주는 역할
IP의 구조 및 동작 원리
- IP는 양 끝 호스트와 네트워크 경계가 되는 지점에 존재해야 한다.
- 네트워크 안의 노드에는 IP 계층 포함 X (자기가 포함된 네트워크이기 때문에)
- L, M은 대칭 구조를 따르면서 IP가 반드시 필요하다.
- 양쪽끼리 연결만 잘 되면 된다.
- Router는 IP 계층 필요
Router, Bridge, Repeater
- IP
- IP와 독립적인 계층 사용 가능
- IP 밑의 3계층이 어떻든지 신경쓰지 않고 단순하게 논리적 링크로 생각
- 아래 구조를 독립적으로 구성할 수 있고, 한 노드 내에서 대칭일 필요가 없다.
- Bridge
- 필터링을 수행하기 때문에 2계층 장비
- 한 노드 내에서 대칭일 필요 없다.
- repeater
- 1계층 장비
- 신호 → 데이터 → 신호 변환 수행
- 반드시 물리적으로 대칭 구조를 이루어야 한다.
IP 패킷 헤더 형식
- 버전 Version (4) : 현재 값은 4. IPv4
- Hlen (4) : 헤더의 32-bit 워드 길이
- TOS (8) : 서비스의 priority / 서비스의 종류 (현재는 보편적으로 사용되지 않음) priority는 동일하게 설정한다.
- Length (16) : 데이터그램 전체의 바이트 단위 길이
- Identification (16) : 단편화 (fragmentation)에 사용된다.
- Flags / Fragment Offset (16) : 단편화 (fragmentation)에 사용된다.
- TTL (8) : 데이터 그램이 최대로 방문할 수 있는 홉(hops) 개수
- 총 hops = router의 총 개수
- 마지막 router인 경우 패킷을 버린다.
- Protocol (8) : 역다중화 키 (TCP=6, UDP=17)
- IP의 상위 계층이 여러 개이기 때문에 demux 키가 필요하다.
- 계층 구조의 관점에서 중요하다.
- Header Checksum (16) : 헤더에만 적용
- 헤더의 Address나 TTL 등의 속성이 변경되는 오류를 검출하기 위한 Checksum
- DestAddr & Src Addr (32): 발신지 및 목적지 주소
- Options (24)
- 추가할 값
- Option 값으로 인해 헤더 길이는 가변
- Padding : Option 값에 맞춰 32 bit 맞춰주기
단편화와 재조립 (Fragmentation and Reassembly)
- 각 네트워크는 나름대로의 MTU (Maximum Transmission Unit)를 가짐
- 방법
- 필요할 때만 분할 (MTU < Datagram. 실제 데이터가 최대 전송 가능한 크기보다 길 때)
- 발신지에서의 단편화는 지양 ↔ IPv6에서는 발신지에서 (PathMTU)
- IPv4는 패킷을 발신지에서 잘라서 보내지 않는다.
- PathMTU : 요즘에는 노드가 병목 지점이 되어 너무 느려지므로 Fragment를 보낼 때 자른다.
- 재단편화 (refragmentation) 가능
- 분할된 단편은 독립적인(self-oriented) 데이터그램
- 목적지까지 재조립을 미룸
- 상실된 단편이 있으면 재조립 불가
- MTU 1500이므로 최대로 전송
- R1-R2의 MTU도 1500이므로 그대로 forward
- R2-R3의 MTU는 512이므로 자르기
- 자를 때 나중에 합치기 위한 정보를 삽입해주어야 한다. (뒤에 언급됨)
- R3-H8에서 MTU가 다시 1500이지만 중간에 재조립을 하면 각각 패킷 단편들이 하나의 노드에 모여야 하므로 제약 사항이 생긴다. 따라서 재조립 X
- 패킷들이 여러 경로로 다양하게 이동할 수 있음
- H8에서 재조립을 한다.
단편화와 재조립 : 예시
- a 패킷을 b 처럼 분리했다.
- Ident : 같은 패킷을 구분할 수 있는 ID값
- more bit : 뒤에 패킷이 더 존재하는지 여부
- 1이면 존재
- 0이면 해당 패킷이 마지막 패킷
- Offset : 지금까지 도착한 나와 같은 패킷들의 길이 저장
- 첫 번째는 0
- 두 번째는 0+512인 512
- 세 번째는 0+512+512인 1024
전역 주소 (Global Addresses)
- 특성
- 전역적으로 유일하다.
- 계층적 (hierarchical): 네트워크 + 호스트
- 주소의 각 부분이 의미를 갖는다.
- 주소 ↔ 위치
- 같은 네트워크에 있는 노드들의 네트워크 주소 부분은 같아야 한다.
- 형식
- a class : IP 주소가 0~127으로 시작. 2^7개의 네트워크 주소, 2^24개의 Host 주소
- b class : IP 주소가 128~191으로 시작. 2^14개의 네트워크 주소, 2^16개의 Host 주소
- c class : IP 주소가 192~로 시작. 2^21개의 네트워크 주소, 2^8개의 Host 주소
- 주로 B class를 선호한다.
- 당연히 주소가 금방 부족하게 된다.
- 점 표기법 (Dot notation) 사용
데이터그램 포워딩 : IP의 실제 동작
- 방법 (호스트, 라우터 동일 동작)
- 모든 데이터그램은 목적지의 주소를 포함한다.
- 데이터그램을 받은 IP가 목적지 네트워크가 직접 연결되어 있다면, 호스트로 직접 포워드 한다.
- 직접 연결 : 목적지 네트워크 주소 == 나의 네트워크 주소 (기계적 판단 가능)
- 호스트로 직접 포워드 : 목적지의 MAC / 링크 주소를 찾아서 send down으로 전달
- 데이터그램을 받은 IP가 목적지 네트워크가 직접 연결되어 있지 않다면, 다른 라우터에게 포워드 한다.
- 간접 연결 : 목적지 네트워크 주소 ≠ 나의 네트워크 주소
- 라우터의 MAC 주소를 찾아서 전달
- 포워딩 테이블은 네트워크 주소(번호)에 대한 다음 홉(라우터)을 가리키고 있다.
- 각 호스트는 디폴트 라우터를 가지고 있다.
- 디폴트 라우터 : 나머지 입력을 모두 포워드하는 곳
- 각 라우터는 포워딩 테이블을 유지한다.
- Network Number & Next Hop 정보 저장
- Interface 는 직접 연결되어 있는 것 (LAN 카드)
- H1에서 H7로 보내는 경우, H1은 R1으로 포워드
- H1에서 H3으로 보내는 경우, H3의 MAC 주소를 찾아 직접 send down으로 전달
데이터 그램 포워딩 : IP의 실제 전달 동작?
- IP는 네트워크 계층 위의 프로토콜
- IP는 실제 네트워크를 하나의 링크로 간주한다.
- IP 노드들과 가상 링크로 구성되는 가상 네트워크 (실제 네트워크 위의 네트워크)
- 따라서 IP 패킷의 전달은 실제 네트워크 계층에게 위임된다.
- 위임을 하려면 service interface 필요
- 어떤 인자의 정보가 필요한가 → 어디로 보낼 것인지 실제 주소가 필요하다. ethernet이 DA, SA 주소를 알아야 패킷 전달 가능하다.
데이터그램 포워딩 : 예시
H7 → H8
- IP 헤더의 SA : H7의 네트워크 번호 + Host 번호 (출발지)
- IP 헤더의 DA : H8의 네트워크 번호 + Host 번호 (목적지)
→ Ethernet으로 send down
- Link / Network 헤더
- H7 MAC 주소
- H8 MAC 주소 (직접 연결 가능하므로)
- 헤더 encapsulation
- SA, DA는 그대로 포함
H7 → H1
- H7의 Default router : R3
- IP 헤더의 SA : H7의 네트워크 번호 + Host 번호 (출발지)
- IP 헤더의 DA : H1의 네트워크 번호 + Host 번호 (목적지)
→ Ethernet으로 send down. 간접 연결 + R3의 MAC 주소 전달
- Link / Network 헤더
- H7 MAC 주소
- R3 MAC 주소
- 헤더 Encapsulation
- R3에 도착했을 때도 SA, DA는 변하지 않는다.
- R3 Link / Network 헤더
- R3 MAC 주소 (현재 전송하는 발신지)
- R2 MAC 주소 (현재 전송하는 수신지)
- SA / DA 그대로 포함
패킷 전달 과정 중에 변경되는 헤더 항목?
- TTL : router에 갈 때마다 1씩 감소
- Header Checksum : 헤더가 변경되었으므로 Header Checksum도 새로운 값으로 변경
728x90
'School Lecture Study > 컴퓨터 통신' 카테고리의 다른 글
19. IP 패킷 실제 전달 과정 (0) | 2022.12.27 |
---|---|
17. 셀 스위칭 (Cell Switching): ATM (0) | 2022.12.27 |
16. 브리지(Bridge) 및 LAN 스위치 (0) | 2022.12.27 |
15. 스위칭과 포워딩 (Switching and Forwarding) (0) | 2022.12.27 |
14. 네트워크 어댑터 (0) | 2022.12.20 |