Presentation is loading. Please wait.

Presentation is loading. Please wait.

2장. 프로토콜 1. 네트워크프로토콜 표준 2. TCP/IP 프로토콜 2.1 네트워크 액세스 계층 2.2 인터넷 계층

Similar presentations


Presentation on theme: "2장. 프로토콜 1. 네트워크프로토콜 표준 2. TCP/IP 프로토콜 2.1 네트워크 액세스 계층 2.2 인터넷 계층"— Presentation transcript:

1 2장. 프로토콜 1. 네트워크프로토콜 표준 2. TCP/IP 프로토콜 2.1 네트워크 액세스 계층 2.2 인터넷 계층
2장. 프로토콜 1. 네트워크프로토콜 표준 2. TCP/IP 프로토콜 2.1 네트워크 액세스 계층 2.2 인터넷 계층        2.2.1 IP 주소         서브네팅(subnetting) 2.2.3 IP 패킷구조 2.2.4 인터넷 계층에서의 데이터 전송 2.2.5 인터넷 계층의 제어 프로토콜 2.3 트랜스포트 계층 2.3.1 TCP 2.3.2 UDP 3. 응용계층 프로토콜      3.1 FTP(File Transfer Protocol)      3.2 SMTP(Simple Mail Transfer Protocol)      3.3 HTTP(Hypertext Transfer Protocol)   4. 차세대 인터넷 프로토콜     4.1 IPv6      4.2 Mobile IP milab.sejong.edu

2 프로토콜 프로토콜(protocol) 통신이 성공적으로 이루어지기 위해 시스템이 수행해야 할 작업에 대한 약속들을 의미 예) 전화를 이용한 통신 TCP/IP (Transmission Control Protocol / Internet Protocol) 인테넷에서는 모든 시스템들이 따르는 프로토콜 이장에서 다루는 내용 프로토콜의 기본개념 TCP/IP 프로토콜의 개념 작동 방식 응용프로토콜 (FTP, SMTP, HTTP) 차세대 인터넷 프로토콜 방식 (IPv6, Mobile-IP) milab.sejong.edu

3 네트워크 프로토콜 프로토콜 (protocol)
서로 다른 시스템에 있는 두 개체 (entity) 간의 데이터 교환을 원활히 하기 위한 일련의 통신규약 개체 (entity): 사용자 프로그램, 데이터베이스 관리 시스템, 전자우편 시스템 등 중요한 구성요소: 프로토콜에 의해 제공될 서비스와 프로토콜이 수행될 환경에 대한 가정 구현하는 데 사용되는 가정 및 각 메시지의 형식 (encoding format) 메시지 송수신에 일관성을 보장하는 절차 기본 구성요소 구문: 데이터 형식, 코딩, 신호 레벨 등의 특정한 형식 의미: 제어 정보로 조정과 에러 처리를 위한 정보 등 타이밍 기법: 속도 조절과 순서 관리 등 milab.sejong.edu

4 네트워크 프로토콜의 기능 세분화 (Segmentation) 와 재합성 (Reassembly)
꾸리기/풀기 (Encapsulation/Decapsulation)  연결 제어 (Link  Control) 흐름 제어 (Flow Control) 에러 제어 (Error Control) 동기화 (Synchronization) 순서 결정 (Sequencing) 주소 설정 (Addressing) 다중화 방식 (Multiplexing) milab.sejong.edu

5 프로토콜의 계층구조 계층화: 대부분의 네트워크는 프로토콜의 설계와 실현, 유지보수를 효율적으로 하기 위해 계층적인 구조를 가짐
기능을 분산시킴으로써 공통적인 서비스를 공유 계층의 수가 많아짐에 따라 각 계층간의 상호작용에 수반되는 과다한 오버헤드와 처리의 지연시간의 증가가 전체적인 통신효율을 저해할 가능성이 있음 계층화의 기준: 각 계층은 잘 정의된 기능을 수행 각 계층마다 표준화될 수 있어야 함 각 계층간의 데이터의 흐름이 최소화되어야 함 논리적으로 분리된 기능을 수행해야 함 milab.sejong.edu

6 OSI 참조모델 서로 다른 통신 구조를 갖는 시스템들간에 정보의 교환을 가능하도록 하기 위한 7개의 계층 구조
ISO (International Standard Organization) 에서 일련의 통신 프로토콜 표준을 제안함 OSI (Open System Interconnection): 개방형 시스템간의 연결을 의미 개방형: 시스템의 종류나 구현의 방법, 시스템의 규모 등의 조건에 제약받지 않고, 서로 다른 시스템끼리도 연결하여 통신이 가능하도록 함 milab.sejong.edu

7 OSI 7 Layer의 기능 계층 계층이름 기능 설명 7 응용 계층 (Application Layer) 응용프로그램 서비스 6
표현 계층 (Presentation Layer) 코드변환과 데이터 변환 5 세션 계층 (Session Layer) 종단간 응용 프로세스 사이에서 동등한 상호작용 4 전달 계층 (Transport Layer) 종단간 에러없는 데이터와 서비스의 품질을 제공 3 네트워크 계층 (Network Layer) 스위치와 라우터의 모든 노드에 대한 정보 2 데이터 링크 계층 (Data Link  Layer) 서로 다른 끝단의 물리적 연결에 대한 전송단위 정보 1 물리 계층 (Physical Layer) 네트워크 매체상에서 전송/수신의 실행 milab.sejong.edu

8 TCP/IP 프로토콜 TCP/IP : 특정한 물리적 네트워크 하드웨어로부터 독립 공통주소 기법 사용
특정한 하드웨어나 운영체제에 독립적으로 개발되어 있는 개방 프로토콜 표준 무료로 이용 가능 특정한 물리적 네트워크 하드웨어로부터 독립 하부 네트웍인 이더넷, 토큰링, 전화망,  X.25망 어떤 것이라도 이용 가능 공통주소 기법 사용 전체 네트워크 내에서 어떤 TCP/IP 장치가 다른 어떤 장치와도 구분되는 유일한 주소를 가지도록 허용 사용자에게 일관성 있고 어디서든지 사용 가능한 서비스를 제공하는 표준화된 상위 레벨 프로토콜 milab.sejong.edu

9 TCP/IP 프로토콜 최초의 TCP/IP는 1969년 미국 국방성에서 컴퓨터 사이의 통신을 위하여 시작
TCP/IP구조는 OSI 모델에 비해 패킷내의 오버헤드가 크며 상당히 비효율적이라고 볼 수 있으며, 또한 OSI 모델과 일치하지 않음 비효율적인 면을 가지고 있어 한때는 없어져야할 프로토콜이라고까지 여겨졌음 TCP/IP는 국제표준으로 지정되지는 않았지만, 전세계 인터넷 사용자들에게는 사실상의 표준 (defacto standard)임 milab.sejong.edu

10 TCP/IP 프로토콜 군 TCP/IP IP (Internet Protocol) 와 TCP (Transmission Control Protocol) 뿐만 아니라 UDP (User Datagram Protocol), ICMP (Internet Control Message Protocol), ARP (Address Resolution Protocol), RARP (Reverse ARP) 등 관련 프로토콜을 통칭 TCP/IP는 다음과 같은 네 개의 계층으로 구성 네트워크 액세스 계층 (network access layer): 데이터 링크 계층, 네트워크 인터페이스 계층 등을 포함 인터넷 계층 (internet layer): 네트워크에서 패킷을 이동시키기 위해서 호스트간의 데이터 이동경로를 구함 (IP, ICMP 포함) 트랜스포트 계층 (transport layer): 호스트간의 데이터 흐름을 가능하게 함 (TCP, UDP 포함) OSI의 전달계층에 해당하는 기능을 수행 응용 계층 (application layer): 사용자에게 각종 서비스를 제공. 전자우편 전송을 위한 SMTP, 파일 전송과 관련된 FTP, 원격컴퓨터 접속을 위한 TELNET, 웹 서비스를 위한 HTTP 등이 포함됨. OSI의 상위 계층인 세션층과 표현 계층을 응용 계층에 포함 milab.sejong.edu

11 TCP/IP 각 계층 milab.sejong.edu

12 TCP/IP의 계층 구조 (1) 네트워크 액세스 계층 (Network Access Layer)
인접한 두 시스템 사이에서 데이터를 전송하는데 필요한 약속, 예를 들면 전송되는 데이터의 형식이나 에러 처리 방식 등을 규정 이더넷, PPP(Poin to Point Protocol), SLIP(Serial Line Internet Protocol), HDLC 등 인터넷 계층 (Internet Layer) 인터넷에 접속된 모든 호스트에게 할당된 IP Address를 이용하여 데이터가 최종 목적지까지 도달하기 위한 경로(Route)를 결정 트랜스포트 계층 (Transport Layer) 통신하는 두 호스트 사이의 데이터의 전송을 위한 통로를 제공 중간 경로에 관계없이 전송 시스템과 수신 시스템 사이에서 성공적인 데이터 전송을 위해 필요한 기능을 담당 잘못 전송된 데이터에 대한 처리 방법과 한번에 전송할 수 있는 데이터의 양, 또한 전송되는 데이터의 포장 형식 등 규정 TCP와 UDP가 존재 milab.sejong.edu

13 TCP/IP의 계층 구조 (2) 응용 계층 (Application Layer) TCP UDP
전송되는 데이터를 적당한 크기의 패킷으로 나누고, 각 패킷에 일련번호를 부여하여 전송 수신하는 호스트에서는 패킷의 성공적인 수신 여부를 전송 측 호스트에 알려줌 데이터의 전송 도중 에러가 발생하거나 손실이 되는 경우를 해당 패킷을 재전송하는 등의 방법을 제공 두 시스템들 사이에 전송의 신뢰성을 보장 인터넷상의 대부분의 서비스가 TCP를 이용 UDP 데이터를 패킷으로 나누어 전송하지만, TCP와는 달리 수신 측 호스트가 패킷의 도착 여부를 송신 호스트에 알려주지 않음 전송의 신뢰성이 제공되지 않음 응용 계층 (Application Layer) 메일, 에디터 등의 응용프로그램을 의미 하부의 TCP와 IP가 제공하는 서비스를 기반으로 사용자에게 특정의 응용 서비스를 제공하기 위한 세부 약속을 정의 SMTP(Simple Mail Transfer Protocol) : 전송 FTP(File Transfer Protocol) : 파일 전송 TELNET : 원격 컴퓨터 접속 HTTP(Hyper Text Transfer Protocol) : 웹(Web) 서비스 milab.sejong.edu

14 네트워크 액세스 계층 물리적인 전송을 담당하는 계층으로서 전기신호등의 규약을 정의
시스템이 네트워크를 이용해 네트워크에 직접 붙어 있는 다른 장치들에게로 데이터를 전달하는 수단을 제공 즉 상위 계층의 IP Datagram을 전송하기 위해 네트워크를 이용하는 방법을 정의 네트웍 액세스 계층으로는 LAN, X.25 패킷망, dial-up회선등 모든 종류의 서브네트워크가 사용 가능’ 서브네트워크들이 사용하는 프로토콜 이더넷, PPP(Poin to Point Protocol), SLIP(Serial Line Internet Protocol) 등 milab.sejong.edu

15 이더넷 (Ethernet) 근거리에 위치한 사용자 기기 및 컴퓨터간에 데이터 전송이 가능하도록 하는 통신 기능을 제공
1976년 Xerox PARC가 발표한 네트워크 표준 1978년 XeroX, Intel, Digital 3사의 공동 표준으로 채택 1980년대 초  IEEE(Institute of Electrical and Electronics Engineering)가 이를 채택하여 약간의 변형하여 IEEE 표준으로 발표 현재 가장 널리 사용되는 LAN의 연결 방법임 CSMA/CD (Carrier Sense Multiple Access/ Collision Detection) 자료 전송중 다른 노드에서 신호를 보내어 충돌이 발견된다면 이를 감지하고 즉시 재전송 milab.sejong.edu

16 이더넷 (Ethernet) – MAC 주소 모든 LAN 카드가 유일한 값을 가짐
LAN에서의 데이터링크 계층을 MAC(Medium Access Control) 계층이라고도 부름 MAC 주소는 48bit의 하드웨어 주소를 의미 처음 2 bit는 항상 0 그 다음 22 bits는 IEEE에서 기관(예: LAN 카드 제조 회사)별로 할당한 주소 그다음 24bit는 생산자가 유일하게 배정하는 번호 모든 LAN 카드가 유일한 값을 가짐 네트웍 카드 제조사에 의해 부여된 MAC 주소는 UAA (universally administered address) 임 milab.sejong.edu

17 이더넷 (Ethernet) 프레임 구조 Preamble : 프레임의 시작과 끝을 알려 주는 부분.
시작 프레임은 1과 0이 반복되어 쓰이고 맨 끝 부분에 11가 쓰임. (즉 8번째 바이트만 로 됨) Destination Address : 프레임이 전송되어야 할 목적지 MAC 주소가 들어가는 부분 주소가 (ff:ff:ff:ff:ff:ff)로 표현된다면, 브로트캐스트 프레임을 뜻하는 것이고, 해당 프레임은 이더넷에 연결된 모든 호스트에 전달 된다. Source Address : 프레임을 전송하는 호스트의 MAC 주소 EtherType : 프레임이 어떤 프로토콜 타임과 연계되어 있는지 알려 줌 IP (EtherType 0x0800), ARP (0x0806)등이 쓰인다. Data : 상위 계층으로 부터 넘겨 받은 데이터가 여기에 담기게 됨. 이 필드의 크기는 46 ~ 1500 bytes 사이여야만 함. 만일 상위 계층으로 부터 46 byte 이하의 데이터를 받게 되면, Ethernet은 최소 46 Byte가 되도록 더미 데이터를 붙임 byte가 넘는다면, 쪼개서 보냄. FCS : Frame Check Sequence의 약자 CRC 라고도 불림. 프레임의 오류를 체크한다. milab.sejong.edu

18 PPP(Point-to-Point) 프로토콜
PPP는 전용회선이나 dial-up 전화회선등 여러 환경에서 일대일 통신을 통한 패킷의 전달을 수행 SLIP(Serial Line Internet Protocol)의 단점을 보완한 프로토콜로서 1992년에 제안됨 IP 패킷의 전송뿐 아니라 여러 프로토콜을 하나의 링크를 통하여 지원 PPP는 비동기전송과 동기전송(Byte-oriented 또는 Bit-orient ed) 회선에서 모두 사용할 수 있으며 매체의 전송속도에 무관하게 동작 저속의 dial-up 회선 뿐만 아니라 고속 전용회선(56kbps~ 45Mbps)에서 사용할 수 있도록 설계됨 SLIP 비동기(asynchronous) 회선을 통하여 IP 패킷을 전송하기 위해 1988년에 제안됨 SLIP은 제안된 초기에는 많은 관심을 끌었으나 다음과 같은 단점 때문에 널리 사용되지 않고 있음 SLIP을 사용하려면 상대방의 IP 주소를 반드시 미리 알고 있어야 함 SLIP은 이더넷과 달리 Type 필드를 제공하지 않는다. 즉, SLIP은 IP 패킷을 전송하는 것 이외의 다른 프로토콜을 지원하는 것이 불가능하다. SLIP은 에러 검출 또는 회복기능을 제공하지 않는다. milab.sejong.edu

19 PPP 프레임 구조 PPP 프로토콜 OSI 링크 계층 표준으로 제안된 HDLC (High-level Data Link Control)에서 변형된 형태임 HDLC의 헤더의 크기를 줄이고 데이터를 압축함으로써 전송 효율을 더 높였다는 것이 특징임 PPP 프레임에서도 HDLC와 마찬가지로  프레임의 시작과 끝을 표시하는 플래그로 0x7E를사용 PPP 프레임의 Flag, Address와 Control은 각각 값이 고정되어 있다. Protocol 필드는 정보(info에 담겨 전달되는 데이타)의 종류를 구분하는 데 사용된다. 예를 들어 Protocol 필드가 0x0021이면 IP 패킷을, 0xC021이면 link control data, 0x8021이며 network control data을 가리킨다. CRC는 체크섬을 의미하며 info는 1500 byte를 넘지 못한다. milab.sejong.edu

20 인터넷 계층 인터넷 프로토콜(IP: Internet Protocol)을 수행하는 계층
이 계층은 비연결형 서비스이므로 각 패킷은 목적지 주소와 자신의 주소를 항상 포함하고 있어야 함 IP 는 종점간의 신뢰성 있는 메세지 전달이나 흐름제어를 위한 기능은 가지고 있지 않다 IP의 주된 작업들은 호스트의 주소 체계 지정과 패킷의 단편화(Fragmentation) 모든 IP 패킷은 송신지와 수신지의 주소로서, 각각 32 비트의 IP 주소를 항상 포함하고 있어야 하며 전송 효율이 그만큼 떨어지게 된다. 인터넷 계층 프로토콜의 핵심은 32비트의 IP 주소(이를 인터넷 주소라고도 한다)의 사용 IP 주소는 인터넷에 접속된 모든 호스트에 대하여 전세계적으로 유일하게 배정되는 주소이다. milab.sejong.edu

21 IP주소와 트랜스포트 프로토콜 주소는 IP 프로토콜의 헤더에 포함되어 있다.
통신에 개입하고 있는 응용 프로그램 같은 개체들의 주소를 설정하기 위하여 처음의 4개의 프로토콜 층을 지날 때 4개의 서로 다른 주소가 필요하다. 하위 네트워크의 주소 (Subnetwork Address, 예를 들어 Ethernet의 MAC 주소) IP 주소(Internet Protocol Address) 트랜스포트 프로토콜 주소 (Transport protocol address) 포트 번호 (Port Number) IP주소와 트랜스포트 프로토콜 주소는 IP 프로토콜의 헤더에 포함되어 있다. milab.sejong.edu

22 IP 주소(IP address) 각 TCP/IP 호스트는 논리적인 IP 주소로 구분된다. IP 주소는 32bit로 구성된다.
dotted decimal 구조: 32bit의 주소를 네 개의 바이트 단위로 나누어 10진법의 숫자로 표현 32비트 IP 주소 를 dotted decimal IP 주소로 표현하면 이 된다. 각 IP 주소는 네트워크 ID와 호스트 ID를 포함 네트워크 ID: IP 라우터에 의해 묶여져 있는 동일한 물리적 네트워크에 존재하는 시스템을 구분 네트워크 ID는 반드시 유일해야 한다. 호스트 ID: 네트워크내에서 워크스테이션, 서버, 라우터, 기타 TCP/IP 호스트를 구분한다. 각 호스트의 주소는 반드시 네트워크 ID에 대해 유일해야 한다. milab.sejong.edu

23 IP 주소 클래스 (1) 네트워크의 크기별로 주소 클래스 A,B,C,D,E 를 정의 주소의 클래스
어떤 비트가 네트워크 ID (netid) 로 사용되는지, 어떤 비트가 호스트 ID (hostid)로 사용되는지를 정의하며, 가능한 네트워크의 개수와 네트워크당 가능한 호스트의 개수를 정의 모든 비트값이 0(또는 1)인 호스트 ID는 특별한 기능을 수행하기 위해 예약되어 있으며 이를 할당해서는 안된다. 즉 모두 0인 것은 자기 자신을 카리키는 주소 (loopback 주소)이며 모두 1인 것은 브로트캐스트용 (방송용) 주소이다. milab.sejong.edu

24 IP 주소 클래스 (2) 클래스 A 주소: 클래스 B 주소 : 아주 많은 수의 호스트를 가지는 네트워크에 지정된다.
클래스 A 주소의 최상위 비트는 언제나 0으로 값이 지정되며 나머지 7비트(첫번째 octet을 이루고 있는 7비트)는 네트워크 ID를 결정하게 된다. 나머지 24비트(마지막 3개의 octet)는 호스트 ID를 나타낸다. 결과적으로 클래스 A 주소는 126(27 -2 개)개의 네트워크와 각 네트워크 마다 16,777,214개 (224-2 개) 의 호스트를 지정할 수 있게 된다. 클래스 B 주소 : 중간 정도의 규모에서 대규모의 네트워크에 적용된다. 클래스 B의 주소 최상위 2 비트의 값은 언제나 이진수 10 로 지정된다. 그 다음 14비트는 (상위 두개의 octet을 이루고 있는 비트) 네트워크 ID를 지정하며, 나머지 16비트는 (하위 두개의 octet)은 호스트 ID를 나타낸다. 클래스 B는 16,384 개의 네트워크와 각 네트워크 별로 65,534 개의 호스트를 지정할 수 있다. milab.sejong.edu

25 IP 주소 클래스 (3) 클래스 C 주소: 클래스 D 주소: 클래스 E 주소 : 소규모의 네트워크에 사용된다.
다음 21 비트(상위 세 개의 octet을 이루는 비트)는 네트워크 ID를 나타내며, 나머지 8비트 값(마지막 octet)은 호스트 ID를 나타낸다. 클래스 C는 2,097,152개의 네트워크와 각 네트워크 별로 254개의 호스트를 지정할 수 있다. 클래스 D 주소: IP 멀티캐스트를 위해 사용된다. 클래스 D 주소의 최상위 4비트는 언제나 이진수 1110으로 값이 지정된다. 나머지 비트는 관심 있는 호스트가 인식할 주소 값을 위해 사용된다. 클래스 E 주소 : 앞으로 사용하기 위해 남겨둔 실험적인 영역이다. 클래스 E 주소의 최상위 비트는 언제나 이진수 1111로 지정된다. milab.sejong.edu

26 IP 주소의 특성 IP address가 네트워크 주소와 호스트 주소로 이루어짐으로써 다음의 특성을 제공하게 된다.
네트워크내의 호스트에 접근하는 모호하지 않은 기술 방법을 제공한다.  게이트웨이는 호스트와 네트워크간의 사상표를 관리할 필요가 없다. 결과적으로 주어진 Internet address에 의하여 호스트가 연결된 네트워크를 식별하기 위해 시간을 소비하지 않고 즉각적인 경로 결정이 가능하다. 호스트가 다른 네트워크에 연결된다면 그 IP주소는 달라진다. 호스트가 여러 네트워크에 연결되어 있다면 (multi-homing host) 그것은 여러 개의 IP 주소와 여러 개의 이름을 갖게 된다. 여러 개의 연결 중에 하나가 고장이 나는 경우 비록 다른 연결들을 통하여 접속이 가능하더라도 고장이 난 IP주소를 통해서는 도달할 수 없다.  milab.sejong.edu

27 IP 기술의 동향 128 bit의 IP 주소체계인 IPv6 Mobile IP
IPv6도 기본적인 개념은 IPv4에 두고 있으므로 IPv4를 이해하면 IPv6로 전환하는데 커다란 어려움이 없음 Mobile IP 휴대용 기기 (노트북이나 PDA, 핸드폰)의 사용이 늘어나면서 이들 또한 인터넷에 접속을 하여야 함 IPv6에서 Mobile IP를 수용하는 방안도 표준으로써 진행됨 milab.sejong.edu

28 서브네팅(subnetting) 좀 더 작은 브로드캐스트 도메인을 만들고 호스트 ID의 비트를 잘 이용할 수 있도록 하기 위함
IP 네트워크는 IP 라우터로 경계가 지어지는 작은 네트워크로 분리 가능 분리된 네트워크에 새로운 서브넷 네트워크 ID를 지정한다. IP 주소의 어떤 부분이 네트워크 ID 인지를 정의하는 새로운 값이 필요 서브넷 마스크는 32비트의 값으로 네트워크 ID와 호스트 ID를 IP 주소에서 구분하는 역할로 사용 네트워크 ID에 해당하는 모든 비트는 1로 설정된다. 호스트 ID에 해당하는 모든 비트는 0으로 설정된다. 기본 서브넷 마스크 주소 클래스 서브넷 마스크의 비트 표시 서브넷마스크 Class A Class B Class C milab.sejong.edu

29 서브네팅(subnetting)의 예 클래스 B 주소에서
hostid로 16비트가 아닌 14비트만 사용하고 netid로 16비트가 아닌 18비트를 사용하는 경우 subnet mask는 이 된다. 배정 가능한 호스트의 수는 16,382 (214-2) 개이며, 가능한 서브네트워크의 개수는 4개이다. 시스템에 따라서는 전부 0이나 1을 허용안하며 이경우 가능한 서브네트워크의 개수는 2 (22-2) 개만 가능할 수도 있다.) milab.sejong.edu

30 IP 패킷구조 IP는 기본적으로 비신뢰성과 비연결성의 두가지 특징을 가진다.
데이터그램의 전송의 성공을 보장하지 않으며 (비신뢰성), 연속적인 데이터그램에 대한 정보를 가지고 있지 않아 각각의 데이터그램은 독립된 객체로 다루어진다 (비연견성). IP의 주요 속성들을 간단히 정리하면 아래와 같다. 비연결 프로토콜이다.  필요시 패킷을 분할, 단편화한다. 32비트의 IP주소를 이용하여 주소를 지정한다. 8비트의 트랜스포트 프로토콜의 주소를 사용한다. 최대 패킷의 크기는 65,535바이트이다. 헤더에 대한 checksum만 가지며 데이터에 관한 checksum은 없다. 항상 필요한 프로토콜 항목 필드가 아닌 경우 선택적으로 사용 가능하다. 유한한 패킷 수명을 가진다.    milab.sejong.edu

31 IP 패킷구조 milab.sejong.edu

32 IP 패킷헤더의 기능 (1) Ver (Version number) (4bit) : Length (4bit):
선택사항인 항목들이 추가됨에 따라 프로토콜의 헤더의 길이는 증가하며 헤더를 해석하기 위해서는 정확한 길이를 알아야 한다. Service Type (8bit): 이 항목은 고정된 규칙에 따라 메세지를 처리하도록 하기위한, IP 프로토콜 장치에 대한 입력을 담고 있다. 실제로 두 컴퓨터간에는 질적으로 차이가 나는 서로 다른 경로가 존재하는 경우가 거의 없기 때문에 값 0이 거의 항상 사용된다.  Total length (16bit) : 프로토콜 헤더를 포함한 패킷의 길이 IP 패킷은 최대 길이가 65,535(216-1)바이트가 된다. milab.sejong.edu

33 IP 패킷헤더의 기능 (2) Identification (16bit) Flags (3bit)
이것은 송신 호스트에 의하여 생성되는 패킷에 대한 유일한 식별자이다.  이 항목은 단편들을 재합성하는데 있어 단편들의 연결을 식별하기 위해 사용된다. Flags (3bit) DF(Don't Fragment)와 MF(More Fragment) 두 비트는 단편화의 경우 패킷의 처리를 제어한다.  첫번째 비트 : 미사용 두번째 비트 : 단편화 금지 플래그 [DF bit] (0: 단편화 가능)   세번째 비트 : More 비트 [MF bit] (0: 마지막 패킷, 1: 연속되는 패킷) 만약 DF 비트가 세트되면 IP 패킷은 어떠한 상황에서도, 예를 들어 더 이상 전달되지 못하고 버려져야 하는 경우에도 단편화되지 않는다.  MF 비트는 더 이상의 추가적인 서브 패킷이 있는 지를 나타낸다. Fragment offset(13 bit) MF 비트가 세트되었다면 이 항목은 패킷에 든 서브 메세지의 전체 메세지의 시작으로부터의 상대적인 위치를 나타낸다.  수신 호스트는 이 항목을 이용하여 원래의 패킷으로 올바르게 재합성할 수 있다.  위에서 언급한 플래그로 인하여 이 항목은 13비트의 크기를 가진다. 오프셋은 8바이트 단위로 계산되며 결국 IP 패킷의 최대 길이는 65,535(8* )이다. milab.sejong.edu

34 IP 패킷헤더의 기능 (3) Time to live - TTL (8bit) Transport protocol (8bit)
송신 호스트는 패킷이 버려지기까지 얼마나 오랫동안 네트워크상에 존재할 수 있는 지를 확정한다.   TTL은 일반적으로 패킷이 지나갈 수 있는 최대의 노드의 수와 같다.  만약 이 항목이 0의 값을 갖는다면 현재의 처리기에 의해서 이 패킷은 버려져야 한다.  이로서 패킷이 네트워크에서 무한정 회전하는 것을 막을 수 있다.  이 경우 송신 개체는 이 사건(수명이 다한 패킷의 폐기)에 대한 ICMP 메세지를 받게 된다. Transport protocol (8bit) 이 항목은 패킷이 전송되어져야 할 트랜스포트 프로토콜의 ID를 담는다.  예를 들어 TCP인 경우 6을, UDP인 경우 17을, ICMP인 경우 1의 값을 갖는다. Header checksum 이 항목은 프로토콜 헤더에 대한 체크섬을 갖는다.  이것을 통하여 호스트는 노드들이 잘못된 데이타를 이용하여 작업하는 것을 막을 수 있다.  효율성을 위하여 사용자 데이타에 대한 검사는 하지 않는다.   TCP/IP 구조에서는 모든 프로토콜에 Internet checksum이라는 방법이 사용된다. Source address : 송신지 IP 주소 Destination address : 수신지 IP 주소   milab.sejong.edu

35 IP 패킷헤더의 기능 (4) Options and padding
특별한 작업(네트워크 관리, 보안)등을 위하여 IP 프로토콜의 헤더는 다음에 알아볼 추가사항들을 포함하도록 확장된다.  IP 프로토콜 헤더의 크기는 4의 배수가 되도록 하기 위하여 필요한 경우 padding 문자들을 삽입한다. IP의 데이타그램에서는 IP 옵션(IP option) 들이 IP 프로토콜 헤더에 추가되어 전송된다. 가능한 IP 옵션들은 다음과 같다.  Source route: IP 프로토콜 헤더 뒤에 데이타그램이 반드시 통과해야하는 Internet address들의 리스트를 덧붙인다.  Record route: 데이타그램이 통과한 노드들에게 그들의 Internet address를 전달하도록 한다. Time stamp: 전송 구간에서의 지연을 측정하기 위해 노드를 통과한 시간을 전달하도록 한다. Security Stream identifier End-of-option list No operation : 옵션 리스트의 길이를 맞추기 위해 사용된다. milab.sejong.edu

36 인터넷 계층에서의 데이터 전달 단편화 (Fragmentation)
두 호스트 사이의 최소 MTU  보다 큰 메시지를 전달 할 경우에는 한번에 전달 할 수 없기 때문에 이를 여러 개의 IP 패킷으로 분해하여 단편화 MTU(Maximum Transmission Unit): 네트워크 구간에서 한번에 전송할 수 있는 패킷의 최대 크기 예를 들어 CCITT X.25에서 패킷은 128바이트보다 클 수가 없다. Ethernet 패킷의 경우 1526바이트까지 가능하다.  나누어진 각 IP 패킷의 MF 비트를 1로 세트하여 이들이 논리적으로 연결된 것임을 표시하고 마지막 패킷의 MF 비트는 0으로 하여 전송 단편화란 각 네트워크내의 각 노드의 IP가 수신한 패킷을 다음 노드나 호스트로 전송하기 위해 이 패킷을 분할할 수 있는 능력을 가지는 것을 말한다.  모든 목적지 IP는 단편화된 메세지들을 재합성할 수 있는 능력이 있어야 한다. milab.sejong.edu

37 단편화 과정 메세지의 단편 아래 예는 단편화의 과정에서 생성되는 다양한 IP 프로토콜 헤더들을 보여준다. 초기 상태
각각의 단편들은 그들의 목적지까지 서로 다른 경로를 따라 도달할 수도 있다. 수신 개체는 메세지의 단편을 전체 메세지로 재합성할 수 있다 수신 개체가 모든 단편들이 수신되었다는 것을 확신할 수 있어야한다. 아래 예는 단편화의 과정에서 생성되는 다양한 IP 프로토콜 헤더들을 보여준다.  단편의 오프셋의 크기는 8바이트 단위로 계산되는 것에 주의하라.  따라서 마지막 패킷을 제외한 모든 패킷들은 8의 배수 길이의 가진다(104=8×13바이트).   20바이트 크기의  IP 프로토콜 헤더와 104바이트의 데이타를 합하여 총 124바이트가 된다. 초기 상태         네트워크 최대 패킷 길이 : 128 바이트         전송하려는 데이타의 바이트 수 : 300 바이트         패킷의 식별번호 : 2354         옵션 없음. 단편화 결과         단편 1 : 길이 124, 오프셋 0, MF = 1, ID = 2354         단편 2 : 길이 124, 오프셋 13, MF = 1, ID = 2354         단편 3 : 길이 112, 오프셋 26, MF = 0, ID = 2354 milab.sejong.edu

38 인터넷 계층의 제어 프로토콜 ICMP (Internet Control Message Protocol)
ICMP는 모든 IP 구현들 속의 한 구성 요소이며 트랜스포트 프로토콜로서의 유일한 기능은 오류를 전송하고 IP를 위해 데이터를 진단하는 것이다.  IP 프로토콜 헤더에서의 트랜스포트 프로토콜 주소는 1이다. 주로 IP가 이용하며 ping이나 traceroute 같은 응용 프로그램도 직접 이용을 한다. ICMP는 다음의 기능을 수행한다. 흐름제어 : 데이터그램이 처리 속도에 비해 너무 빨리 도착될 때, 목적지 호스트나 게이트웨이가 송신 측에 ICMP 소스 제지 메시지를 보낸다. 이 것은 소스에게 데이터 그램을 보내는 것을 일시적으로 멈추라고 통보하는 것이다. 도착이 불가능한 목적지 감지 경로 재지정 원격 호스트 검사 ARP (Address Resolution Protocol) IP 네트워크 상에서 IP주소를 물리적 네트웍 주소로 대응시키기 위해 사용되는 프로토콜이다. 여기서 물리적 네트웍 주소라 함은 이더넷 또는 토큰링의 48 bits 네트웍 카드 주소를 의미한다.  예를 들어, IP 호스트 A가 IP 호스트 B에게 IP 패킷을 전송고자 할 때 IP 호스트 B의 물리적 네트웍 주소를 모르는 경우, ARP 프로토콜을 사용하여 목적지 IP 주소 B와 브로드캐스팅 물리적 네트웍 주소 FFFFFFFFFFFF를 가지는 ARP 패킷을 네트웍 상에 전송한다. IP호스트 B는 자신의 IP 주소가 목적지에 있는 ARP 패킷을 수신하면 자신의 물리적 네트웍 주소를 A에게 응답한다. 이와 같은 방식으로 수집된 IP 주소와 이에 해당하는 물리적 네트웍 주소 정보는 각 IP 호스트의 ARP 캐시라 불리는 메모리에 테이블 형태로 저장된 후 다음 패킷 전송시에 다시 사용된다. milab.sejong.edu

39 인터넷 계층의 제어 프로토콜 (2) RARP (Reverse ARP)
ARP와는 역으로, IP 호스트가 자신의 물리 네트웍 주소는 알지만 IP 주소를 모르는 경우, 서버로부터 IP주소를 요청하기 위해서는 RARP(ReverseARP)를 사용한다. IGMP (Internet Group Message Protocol) IGMP는 인터넷 컴퓨터가 멀티캐스트 그룹을 인근의 라우터들에게 알리는 수단을 제공하는 인터넷 프로토콜이다. 멀티캐스팅은 인터넷상의 한 호스트 컴퓨터가 미리 지정된 다수의 다른 컴퓨터들에게 콘텐츠를 보낼 수 있도록 허용한다. 멀티캐스팅은 현장에서 이동용 컴퓨터 사용자들의 주소록을 수정하거나, 배포 목록에 맞추어 회사의 회보를 보내는 업무, 그리고 멀티캐스트 그룹 회원을 설정함으로써 수신 그룹의 청중들에게 스트리밍 매체의 고대역폭 프로그램을 방송하는 등과 같은 일에 사용될 수 있다. milab.sejong.edu

40 트랜스포트 계층 TCP 프로토콜 UDP 연결형(Connection Oriented) 서비스를 제공
상대방과 연결을 설정하고, 이 연결을 이용해 데이터를 주고받은 후 연결을 해제하는 세 단계의 절차를 걸친다. TCP에서는 연속된 흐름(stream)의 데이터 송수신이 가능하며 큰 파일 전송 시에도 데이터가 중간에 끊어지는 것에 대하여 사용자가 신경 쓸 필요가 없다.  일반적으로 안정적인 데이터 전송을 필요로 하는 응용 프로그램은 대부분 TCP를 사용 TCP는 한 번에 많은 양의 데이터를 전송할 때나 신뢰성 있는 연결이 필요할 때, 또는 데이터의 순서 보장이 필요할 때 사용된다. UDP 비연결형(Connectionless) 서비스를 제공 연결을 설정하고 해제하는 절차 없이 바로 데이터를 주고받는 방식 데이터그램의 손실 확인이나 순서유지를 보장해 주지 않기 때문에 (상위의) 응용 프로그램에서 필요하면 이를 처리해야 함 프로토콜 헤더 처리에 필요한 오버헤드(연결설정 지연 등)가 연결형 서비스보다 적어 간단한 패킷을 주고받는 경우에 유리 네트워크가 안정적이며 빠른 전송 등에는 UDP를 이용 UDP의 특징 패킷을 단순히 목적지 주소로 전송만 한다. 패킷의 분실 확인이나 전달 순서를 보장해주지 않는다. 프로토콜 헤더의 크기가 작고 연결 지연이 없으므로 간단한 패킷을 주고받는 경우에 유리하다(실시간 서비스 등). 패킷을 방송(broadcast) 또는 멀티캐스트를 해야 하는 경우에 사용된다. milab.sejong.edu

41 TCP TCP의 특징 통신 상대와 연결 설정 / 종료: 동시에 양방향 전송 (전이중.Full Duplex)이 가능한 가상선로(VirtualCircuit )를 제공한다. 결국 상대가 통신 가능한가를 확인 후 통신을 행한다. 신뢰성 있는 전송을 위하여 오류 발생시 패킷 재전송, 패킷 전달순서 확인, 중복 패킷 제거, 흐름제어, 네트워크 오동작시 보고 등을 수행한다. 다음과 같은 기법을 이용하여 신뢰할 수 있는 전송을 보장한다. 순서번호(sequence number): 순서번호를 접함에 따라 데이터의 도착 순서를 확인한다. 수신 개체의 억놀리지먼트(ACK: Acknowledgement)를 포함한 체크섬 형식 시간 할당에 의한 억놀리지먼트 시간 할당 억놀리지먼트후의 재전송. 효율성의 향상을 위한 sliding-window 원리 긴급 데이터(Urgent data)와 push function 연속된 흐름(stream)의 데이터 송수신이 가능하며 큰 파일 전송 시에도 데이터가 중간에 끊어지지 않는다. 사용자의 입장에서 볼 때 데이터는 블록이 아니라 데이터의 스트림이 전송된다. 프로토콜에서 사용되는 거의 모든 항목들이 블럭이 아니라 바이트 단위로 계산된다. 애플리케이션은 패킷을 의식 않고 필요에 따라 적당한 길이의 데이터를 써넣을 수 있으나 TCP는 데이터를 적당 세그먼트로 패킷의 전송 단위에 맞게 분할하여 송신 처리한다. milab.sejong.edu

42 TCP 프로토콜 헤더 milab.sejong.edu

43 TCP 프로토콜 헤더의 기능 (1) Source and destination port numbers (각각 16 bit) :
이 두 항목은 가상 회선의 양끝의 종점을 지정한다. Sequence and acknowledge numbers (각각 32bit) 이 두항목은 각 데이타가 연결이 설정되어있는 동안 교환되는 데이타의 전체 흐름에서 어느 위치에 해당하는 지를  나타낸다. Sequence number는 송신 방향에서의 순서를 나타내고 acknowledge number 는 반대편에서 수신되는 바이트들의 순서에 적용된다. 데이타의 전송시 송신 개체는 Sequence number를 앞서 송신한 바이트의 수만큼 증가시킨다. Acknowledge number는 수신 개체가 얼마만큼의 데이타를 정확하게 수신하였는지를 표시한다. Header length (4bit) : 이 항목은 32비트 크기의 단위로 TCP 프로토콜 헤더의 크기를 나타내며 따라서 데이타 영역의 시작을 판단하는데 사용된다. 보통은 5가 된다. milab.sejong.edu

44 TCP 프로토콜 헤더의 기능 (2) Code bits (6bits) :
설             명 URG Urgent 항목의 포인터가 유효함. ACK Acknowledgement number가 유효함. PSH 해당 segment의 데이타는 응용 프로그램에게 즉시 전달되어야 한다. 이 segment에 대한 acknowledgement는 현재 acknowledgement number까지의 모든 데이타가 수신 개체에 도달했음을 뜻한다. UNIX 시스템에서는 송신 버퍼에 남아있는 모든 데이타를 한 세그먼트에 담아 전송할 때 항상 PSH를 전송한다. RST 연결을 재설정하거나 유효하지 않은 세그먼트에 대한 응답으로 사용된다. SYN 연결 설정 요구를 나타내며 반드시 승인되어져야 한다. FIN 한쪽 끝에서 유발되는 연결의 종료와 일정 방향으로의 데이타 흐름의 끝을 나타낸다. 반드시 승인되어야한다. milab.sejong.edu

45 TCP 프로토콜 헤더의 기능 (3) Window size Checksum
이 항목은 수신 개체가 해당 연결에 할당된 버퍼로 받아들일 수 있는 데이타의 바이트 수를 담고 있다(receive window).  목적지 TCP는 데이타의 흐름을 제어하기 위해 이 항목을 사용한다.  예를 들어 윈도우의 크기를 0으로 설정함으로써 근원지 TCP를 효과적으로 정지시킬 수 있을 것이다.  윈도우의 크기를 단계적으로 증가시킴으로써 데이타의 흐름은 재개될 수 있다. Checksum 체크섬은 프로토콜 헤더, 데이타, 그리고 가상 헤더(pseudo header)에 적용된다.  송신 개체에서는 TCP 체크섬을 생성할 때 가상 헤더를 함께 생성하여 체크섬에 포함시킨다.  milab.sejong.edu

46 TCP 프로토콜 헤더의 기능 (4) Urgent pointer Options
Sequence number와 함께 이것은 데이타의 위치에 대한 포인터이다.  이 포인터가 가리키는 데이타 바이트는, 이어지는 데이타가 중요한 것임이 식별된 상황에서, 그 긴급한 메세지의 마지막 바이트이다.  이러한 기능을 긴급 데이타(urgent data)라 부른다.  Options TCP는 3개의 옵션만을 가지고 있다: End-of-Option List, No Operation, Maximum Segment Size. milab.sejong.edu

47 포트 번호 포트 번호는 16비트의 크기를 가지기 때문에 한 호스트는 이론적으로 65,535 개의 서로 다른 TCP 연결을 동시에 가질 수 있다.  모든 서비스는 자신의 고정된 포트 번호를 가져야 하며 client는 이 포트 번호에서 서비스를 제공하는 server의 주소를 지정하여야 한다 잘 알려진 포트 번호(well-known port number): 잘 알려진 포트 번호에 의해 이용가능한 고정된 서비스 Ex) TELNET이나 FTP 서비스 포트 번호 프로토콜 ftp 21 TCP tftp 69 UDP login 513 talk 517 milab.sejong.edu

48 Sliding window / Urgent data
연결상의 각 개체는 윈도우에 의해 설정된 수 만큼의 바이트를 상대편으로부터의 인가를 기다리지 않고 전송할 수 있다. 전송-승인 과정이 동시에 이루어질 수 있으므로 큰 지연 시간을 가지는 서브 네트워크에서도 최적의 처리율을 이루는 병렬성을 얻을 수 있다. Urgent data 수신 응용 개체에게 즉시 읽어야 하는 중요한 데이타가 데이타 흐름의 어느 특정한 위치(‘in-band')에 있음을 알려준다.  Urgent pointer는 이전 데이타의 마지막 바이트를 가리키며 이어지는 바이트가 긴급 메세지의 시작임을 알려준다.  그리고 수신하는 응용 개체는 urgent pointer 다음에 이어지는 데이타를 읽기 시작한다. Urgent-data 장치는 특별히 TELNET를 위한 고안된 것이다. milab.sejong.edu

49 TCP 전송 시나리오 TCP가 연결에 있어서 가장 중요한 단계들
연결의 확립 데이터 교환 연결의 종료 어떻게 프로토콜 헤더의 항목들을 이용하는지를 3단계로 나누어 분석 화살표는 세그먼트의 전송 방향을 나타냄 TCP 프로토콜 헤더의 항목들은 괄호로 묶어 표시 milab.sejong.edu

50 연결의 확립 three-way handshake 방법이 사용됨
SYN 플래그에 의해 활성화된 각 개체는 상대편이 보낸 sequence number를 1 증가시킴으로써 승인을 함 Client A의 sequence number (SEQ = 100)에 대한 응답으로 Client B는 acknowledgement (ACK = 101)이 전송함  그 반대방향도 마찬가지임 ACK 플래그는 acknowledgement 항목이 유효함을 나타낸다.  milab.sejong.edu

51 데이터 교환 두 방향에서 동시에 발생하는 데이터 교환을 보임
목적지는 SEQ 항목(SEQ = 101)에 들어있는 값과 수신한 데이터의 바이트 수(DATA = 5)를 더한 결과를 ACK 항목에 넣어서(ACK = 106) 수신 결과를 알린다.  데이터는 acknowledgement와 함께 반대 방향으로 전송되며  동일한 방법에 의해 수신 결과를 통보 받는다. milab.sejong.edu

52 연결의 종료 Client A에서 FIN 플래그를 전송함으로써 연결이 종료되는 과정을 보인다.
Client B는 응답 세그먼트의 acknowledgement항목에 수신한 세그먼트의 sequence number를 1 증가한 값을 넣어 보냄으로써 FIN 플래그에 대하여 승인하게 된다.  이것은 그 시점까지 Client A에 의해 보내어진 모든 데이터가 수신되었음을 알리는 것이다.  그 후  Client A는 더 이상의 데이터를 보내지 않는다.  그러나 Client B는 자신이 FIN 플래그를 전송 할 때까지 데이터의 전송을 계속한다.  milab.sejong.edu

53 Timer Retransimission timeout Persistence timer Quiet timer
RTO(Retransmissiom Timeout)은 TCP 패킷의 전송 후, 그 승인 세그먼트의 수신까지 걸리는 시간이 미리 설정한 시간 간격을 초과하는지를 알아보기 위해 측정된다.  이 경우 패킷은 재전송되어야 한다.  실제에 있어서 이 시간 간격은 고정된 것이 아닌데, 고정된 시간 간격을 가지고서는 서로 다른 지연 시간을 갖는 네트워크들 사이에서 TCP가 작업을 할 수가 없기때문이다.  Persistence timer TCP상의 데이타의 교환에 있어서 이론적으로 수신 윈도우의 크기가 0이되고 윈도우를 재개 시키려는 세그먼트가 동시에 분실되는 것이 가능하다.  결과적으로 양 TCP개체는 무한대기 상태에 빠지게된다.  이러한 사태에 대한 대책이 persistence timer인데, 이것은 일정한 시간간격으로 상대편인 수신개체가 다시 준비상태가 되었는지를 검사하는 작은(1바이트) TCP 세그먼트를 전송한다. Quiet timer 이미 사용되어진 TCP 세그먼트가 네트워크에 남아서 발생시킬 수 있는 연결상의 혼란을 방지하는 기능을 한다.  TCP 연결의 종료이후 MSL(Maximum Segment Lifetime)의 2배의 시간이 경과한 후에만 포트 번호가 사용가능해지도록 한다.  응용 프로그램들은 연결의 종료직후 동일한 상대편(즉 동일한 포트 번호)과 연결을 재개하는 경우 이 대기 시간을 확인할 수 있다.  시스템은 응용 프로그램에게 포트 번호가 여전히 작업중임을 알려준다.  새로운 연결의 설정은 대략 30초 정도가 지나야 가능하다. Keep-alive timer and idle timer 이 두개의 타이머는 서로 연관이 되어있다.  Keep-alive timer는 상대 TCP로의 연결이 여전히 존재하는지를 검사하기 위해 일정한 시간간격동안 빈 패킷을 전송한다.  상대 TCP가 응답하지 않는 경우 idle timer가 종료한 이후 연결을 제거한다. milab.sejong.edu

54 UDP UDP는 신뢰성이 보장되지 않고(unreliable) 비연결인 데이터그램 전송 구조를 제공
패킷들이 수신자가 처리할 수 있는 양보다 더 빨리 도착할 수 도 있다. IP에 의해 수행되는 작업상에서, UDP는 단지 포트 번호와 체크섬만을 제공한다.  TCP와 달리 이 경우에는 트랜스포트 억놀리지먼트가 없으며 또 네트워크에 신뢰성을 부여할 만한 다른 수단도 없다.  그러나 추가적인 기능들을 제외시킴으로써 UDP는 특별히 고속의 응용(예를 들면 NFS)에 대해 효율적이며 적합한데, 이러한 응용들은 LAN과 같은 빠르고 신뢰할 수 있는 전송 매체에 설치하기에 적합한 것들이다. milab.sejong.edu

55 응용계층 프로토콜 이 계층에서는 또한 하부의 TCP와 IP가 제공하는 서비스를 기반으로 사용자에게 특정의 응용 서비스를 제공하기 위한 세부 약속을 정의 즉 FTP, SMTP, HTTP등의 상위 프로토콜들이 그 예이다. 우리가 통신 소프트웨어를 작성한다면 TCP, UDP와 IP에 대한 이해도 필요하지만, 응용계층에서 제공하는 상위 프로토콜 또한 이해하고 있어야 한다. 이어지는 절들에서는 이러한 프로토콜에 대하여 프로그램 구현이 가능할 수준으로 설명을 한다. milab.sejong.edu

56 FTP(File Transfer Protocol)
TCP/IP 프로토콜을 이용하여 같은 운영체제 또는 다른 운영체제간의 컴퓨터끼리 파일 전송을 위한 고급 수준의  프로토콜이다. FTP는 파일을 전송하는 프로그램의 이름 자체를 말하기도 한다. IETF RFC 959 본 장에서는 FTP 서비스를 위한 서버 클라언트 모델의 개요와 FTP 작동 원리 등에 대해 설명 C, java, windows 프로그래밍에서 FTP의 프로그램 작성및 소스코드에 대해 설명 할 것이다. milab.sejong.edu

57 두개의 연결 FTP는 클라이언트와 서버사이에 두개의 연결을 한다는 점이 일반 클라이언트/서버모델과 다른다.
Well-Known 포트인 21번 포트를 사용하는 컨트롤 커넥션(Control Connection) Well-Known 포트인 20번 포트를 사용하는 데이터 커넥션(Data Connection) 또한, FTP는 제한된 파일 형식(ASCll, binary 파일 등)과 파일 구조(바이트 스트림 또는 레코드 지향 형식)를 지원한다.  milab.sejong.edu

58 컨트롤 커넥션과 데이터 커넥션 컨트롤 커넥션(Control Connection) 데이터 커넥션(Data Connection)
컨트롤 커넥션은 전형적인 클라이언트-서버 방식으로 연결되는데, 서버는 FTP의 well-known 포트(21)에 수동적 개방을 하고 클라이언트의 접속을 기다린다. 클라이언트는 컨트롤 커넥션을 하기 위해 TCP 포트 21에 자신이 사용할 포트(클라이언트에서 임시로 생성한 포트)를 가지고 능동적 개방을 행한다. 이렇게 하여 생성된 컨트롤 커넥션은 클라이언트가 이 서버와 통신하는 시간동안 계속 유지된다. 이러한 연결은 클라이언트에서 서버로의 명령(FTP 각종 명령)과 서버의 응답을 위하여 사용된다. 데이터 커넥션(Data Connection) 데이터 커넥션은 클라이언트와 서버 사이에서 파일이 전송될 때마다 생성된다.  즉 컨트롤 커넥션이 되어 있는 동안 여러 번의 파일 전송을 한다면 데이터 연결이 여러 번 설정, 폐쇄 과정을 반복한다. 데이터 커넥션을 위한 IP 서비스 형태는 파일 전송을 위한 것이기 때문에 “최대 처리율”을  가져야 한다. 데이터 커넥션은 서버가 아닌 클라이언트가 컨트롤 커넥션 기반에 임시 포트를 사용하여 수동적 연결 설정을 시도한다. 파일 전송 시에는 클라이언트가 명령을 보내기 때문에 반드시 클라이언트가 수행을 해야 하는 것이다. 클라이언트는 이 포트 번호를 서버에 포트 명령어를 사용하여 전송한다. 서버는 포트 번호를 수신한 후 well-known 포트(20)와 임시 포트 번호를 사용하여 능동적 연결 설정을 시도한다. milab.sejong.edu

59 클라이언트/서버 통신 FTP 클라이언트와 서버는 서로 통신을 통해, 데이터를 주고받고 메시지를 교환한다.
통신을 위한 부분은 크게 컨트롤 커넥션상의 통신과 데이터 커넥션상의 통신으로 나눌 수 있다. 각 통신에는 FTP 명령어집합이 이용되는데, 명령어는 컨트롤 커넥션상의 명령과 데이터 커넥션을 위한 명령, 기타 명령으로 나눌 수 있다. 컨트롤 커넥션 통신은 한번에 하나의 명령을 전송한다. 각 명령이나 응답은 미리 예약된 한줄의 명령어 집합을 이용한다. 각 명령은 <SP> 명령 <CRLF> (Carrigae return, Line Feed> 의 형식을 가지는데 컨트롤 커넥션을 이용한 명령은 다음과 같이 5단계로 구분한다. milab.sejong.edu

60 1단계 : 컨트롤 커넥션의 연결 FTP 서비스를 위한 가장 첫단계로 컨트롤 커넥션을 연결하기 위해 서버주소와 포트번호를 이용한다. well-known포트인 21번 포트에 컨트롤 커넥션의 연결을 요청하면 서버는 그에 대한 성공/실패 유무를 응답해준다. 이 연결은 FTP 서비스 전과정동안 연결되어 있게된다. milab.sejong.edu

61 2단계 : 로그인 처리를 위한 단계 컨트롤 커넥션이 성공적으로 연결되어었다면, 사용자는 USER, PASS 명령을 통해 자신의 ID와 Password를 전송하고, 서버가 인증을 성공하면, 완전한 사용자 컨트롤 커넥션이 이루어진다. Anonymous FTP는 USER와 PASS 값으로 Anonymous를 전송한다. milab.sejong.edu

62 로그인 처리를 위한 FTP 명령어 명령어 구문형태 설 명 USER
<SP> <username> <CRLF> User ID PASS <SP> <password> <CRLF> User password milab.sejong.edu

63 3단계 : 컨트롤 커넥션 상의 명령어 처리 로그인 단계까지 완료되면, 접속한 서버에서의 디렉토리 이동, 삭제, 생성 및 이름 변경 등의 컨트롤 커넥션을 이용한 과정을 진행할 수 있다. 명령어 구문형태 설 명 CWD <SP> <directory> <CRLF> 변경 할 디렉토리 DELE <SP> <file> <CRLF> 지울 파일 MKD 생성할 디렉토리 PWD 현재 경로 RMD 지울 디렉토리 RNFR <SP> <old file name> <CRLF> 이름 변경 파일 이름 RNTO <SP> <new file name> <CRLF> 새로 지정할 파일 이름 명령어 구문형태 설 명 TYPE A, E, I, N, T 파일 타입정의 (A:ASCII, E:EBCDIC, I:Image, N:Nonprint, T:TELENT) MODE S, B, C 전송모드 정의 (S:Stream, B:Block, C:Compressed) milab.sejong.edu

64 <SP> 6-digit identifier <CRLF>
4단계 : 데이터 커넥션 단계 데이터 커넥션은 데이터의전송 및 데이터정보와 같은 데이터 액세스가 필요한 부분에서 연결되어야 한다. 데이터의 액세스가 필요할 때마다 커넥션을 연결하고, 액세스가 끝나면 종료하는 형식의 커넥션이다. 데이터 커넥션은 간단하게 두 가지 형태의 명령으로 나눌 수 있다. 초기 데이터 커넥션을 이루기 위한 PORT 명령과 데이터 커넥션이 이루어진 후, 데이터 정보를 받는 LIST, RETR 등의 명령이다. 명령어 구문형태 설 명 PORT <SP> 6-digit identifier <CRLF> 클라이언트의 포트 선택 milab.sejong.edu

65 데이터 액세스를 위한 명령어 명령어 구문형태 설 명 RETR <SP> File name <CRLF>
서버에서 클라이언트로 파일 다운로드 STOR 클라이언트에서 서버로 파일 전송 APPE 동일한 파일이 존재하면 데이터를 Append ALLO 서버의 파일 저장 공간 분배 REST 특정 파일의 파일포인터 STAT 파일의 상태정보 milab.sejong.edu

66 디렉토리 내의 파일 정보 표시 milab.sejong.edu

67 서버로 파일전송 milab.sejong.edu

68 5단계 : 연결의 해제 FTP 서비스가 완전히 종료하기 위해서는 연결의 해제가 필요하다.
커넥션 종료를 위해서는 QUIT 명령을 서버로 전송하며, 서버는 이에 대해 응답함으로 연결이 완전히 해제된다. 명령어 구문형태 설 명 QUIT 연결해제 신청 milab.sejong.edu

69 FTP 응답코드 - 자리별 첫 번째 자리 수 두 번째 자리 수
lyz  : 긍정적인 예비 응답. 동작이 시작되었지만 다른 명령을 보내기 전에 다른 응답을 수신하기를 기대하라는 예비응답 2yz : 긍정적인 완성 응답. 새 명령을 보낼 수 있다. 3yz : 긍정적인 중간 응답. 명령이 승인 되었지만 다른 추가 명령이 보내져야 한다. 4yz : 순간적 부정 완성 응답. 요청된 동작이 일어나지는 않지만 에러 상태는 일시적인 것이기 때문에 차후에 명령을 재실행 할 수 있다. 5yz : 지속적 부정 완성 응답. 명령이 승인되지 않았고 재시도도 되지 않는다. 두 번째 자리 수 x0z : 문법에러 관련 x1z : 요청에 대한 응답 정보 관련 x2z : 컨트롤, 데이터 커넥션에 대한 응답 관련 x3z : 로그인 과정과 인증과정에 대한 응답 관련 x4z : 미지정 x5z : 서버 파일 시스템의 상태 정보 관련 milab.sejong.edu

70 FTP 응답코드 (1) milab.sejong.edu 응답 코드 코드 설명 120
Service ready in nnn minutes. 125 Data connection already open; transfer starting. 150 File status okay; about to open data connection. 200 Command okay. 202 Command not implemented, superfluous at this site. 211 System status, or system help reply. 212 Directory status. 213 File status. 214 Help message. 215 NAME system type. 220 Service ready for new user. 221 Service closing control connection. 225 Data connection open; no transfer in progress. 226 Closing data connection. 227 Entering Passive Mode 230 User logged in, proceed. 250 Requested file action okay, completed. milab.sejong.edu

71 FTP 응답코드 (2) milab.sejong.edu 331 User name okay, need password. 332
Need account for login. 421 Service not available, closing control connection. 425 Can't open data connection. 426 Connection closed; transfer aborted. 450 Requested file action not taken. 451 Requested action aborted: local error in processing. 452 Requested action not taken. 500 Syntax error, command unrecognized. 501 Syntax error in parameters or arguments. 502 Command not implemented. 503 Bad sequence of commands. 504 Command not implemented for that parameter. 530 Not logged in. 532 Need account for storing files. 550 551 Requested action aborted: page type unknown. 552 Requested file action aborted. 553 milab.sejong.edu

72 SMTP(Simple Mail Transfer Protocol)
SMTP는 SMTP 간의 메일 메시지 교환의 프로토콜과 제어 메시지(ASCII 텍스트)의 형식을 규정한 프로토콜로 전자우편을 보내고 받는데 사용되는 TCP/IP 기반(25번 포트)의 프로토콜이다. 이러한 프로토콜은 서버에 각자의 우편함을 두고 사용자 메시지를 저장한 다음, 주기적으로 서버에 접속하여 편지를 다운로드하는 식으로 운영된다. 즉, 사용자는 SMTP를 메일을 보내는데 사용하고, POP 서버나 IMAP 프로토콜은 자신의 서버에 수신되어 있는 메시지를 받아보는데 사용한다. 이를 위한 통신과정으로, 우선 송신측 메일러와 수신측 메일러 사이에 전이중통신로를 확보한 뒤 송신측으로부터의 커맨드(Command)와 수신측의 응답(Reply)을 교환하며 통신을 한다. milab.sejong.edu

73 메일 시스템의 흐름 milab.sejong.edu

74 SMTP 명령과 응답 command Argument(s) HELO 송신자 호스트 도메인 이름 MAIL
메시지 송신자 전자우편 주소 RCPT 메시지 수신자 전자우편 주소 DATA 전자우편 메시지 QUIT RSET VRFY 수신자 주소 NOOP TURN EXPN 메일링 리스트의 확장 HELP 인수로 전송된 명령에 대한 정보송신 SEND SMOL SMAL milab.sejong.edu

75 필수 명령어 SMTP가 제공하는 14개 명령어 중 HELO, MAIL, RCPT, DATA, QUIT 만이 필수요소이고 나머지 9가지 명령은 선택적으로 사용할 수 있다. HELO HELO 명령은 자신의 고유주소를 알리기 위해 사용한다. 인수는 자신의 호스트 주소이다. Ex) HELO : sejong.ac.kr MAIL FROM MAIL 명령은 우편 송신자의 주소를 의미한다. 인수로는 송신자의 전자우편주소가 들어간다. Ex) MAIL FROM : RCPT TO RCPT 명령은 우편 수신자의 주소를 의미한다. 인수는 수신자의 전자우편주소가 들어간다. Ex) RCPT TO : DATA DATA 명령은 실제 메시지를 포함한다. DATA 명령뒤의 모든 데이터는 전자우편 메시지로 간주한다. 메시지의 종료를 알리기 위해서는 하나의 줄에 마침표를 찍는 것으로 종료된다. Ex) DATA hi~ nice to meet you~ ~~~~ QUIT QUIT 명령은 메시지를 종료하는 것을 의미한다. 어떤 인수도 받지 않으며, 명령어 단독으로 사용된다. 형식은 아래와 같다. milab.sejong.edu

76 SMTP 송수신 처음에 송신측의 메일러는 HELO 커맨드(통신로의 사용개시 선언)을 보내 메시지의 송수신을 개시한다.
송신측의 메일러는 메시지의 송신자명(from:)을 나타내는 MAIL 커맨드와 수신처(To:)를 나타내는 RCPT 커맨드를 보낸 후 DATA 커맨드(메시지 송신개시)에 이어 메시지의 본체를 보낸다. 메시지의 종료는 복귀/개행 “ .” 복귀/개행(CR/LE, CR/LF의 5문자)이다. 마지막에 QUIT 커맨드를 보내 종료한다. 한편 수신 메일러 부터의 응답은 세 자리 숫자 코드와 그것에 이어지는 응답문으로 구성된다. 예를 들어 수신 OK라면 “250 OK", 속행 불가능이라면 ”550“ 응답을 전송한다. milab.sejong.edu

77 SMTP 송수신 milab.sejong.edu

78 SMTP 응답코드 응답코드의 첫 번째 숫자는 아래와 같다. 다음은 대표적인 SMTP 응답코드에 대한 설명이다.
2yz :긍정적 완료응답, 요구된 명령이 성공적으로 완료 3yz : 긍정적 임시 응답, 요구된 명령은 수신하였고, 수행에있어서 추가정보 필요 4yz : 부정적 임시 완료 응답, 요청된 명령이 거절되었으나 임시적으로 거절됨. 5yz : 부정적 완료 응답, 요청된 명령이 거절됨.  다음은 대표적인 SMTP 응답코드에 대한 설명이다. 응답코드 설        명 220 Service Ready 221 Service closing transmission channel 250 Request command completed 354 Start mail unput 421 Service not available 450 Mailbox not available 500 Syntax Error 554 Transaction failed milab.sejong.edu

79 HTTP(Hypertext Transfer Protocol)
HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었고 인터넷 기반에서 하이퍼미디어의 광역적인 정보공유를 위한 프로토콜로 개발되었다. HTTP는 하이퍼 텍스트 문서의 교환을 위해 필요한 여러 가지 기능을 갖춘 통신 규약이기 때문에, HTML을 사용해 작성된 웹 페이지의 하이퍼텍스트 문서 정보를 교환하려면 HTTP라는 통신규약을 사용하는 것이 적합하다. HTTP 통신은 대개 TCP/IP 연결을 통하여 이루어진다. 기본 포트는 TCP 80 이지만 다른 포트를 사용할 수도 있다.  HTTP에서는 요청의 목적을 나타내는 메소드를 이용함으로써 정보취득 뿐만이 아니라 검색, 갱신 등의 보다 많은 기능을 제공한다. 이러한 리소스를 나타내는 방법에는 URI(Uniform Resource Identifier)라 불리는 참조규약이 있고, URI에는 장소를 나타내는 URL(Uniform Resource Locator)이나 이름을 나타내는 URN(Uniform Resource Name)이 있다. 메시지는 인터넷 메일이나 MIME에서 사용되는 것과 같은 형태의 포맷이 적용된다. 또 다른  HTTP의 특징은 프로토콜 그 자체와 그 프로토콜상에서 보내지는 데이터 형식이 서로 독립적이라는데 있다. HTTP는 리소스에 하이퍼링크를 걸 수 있는 HTML(Hyper Text Marup Language)과 같이 이용된다. milab.sejong.edu

80 HTTP의 송수신 체계 단순 송수신 모델 milab.sejong.edu

81 복합 모델 milab.sejong.edu

82 Proxy/Gateway/Tunnel
milab.sejong.edu

83 캐싱(cache) 모델 milab.sejong.edu

84 URI(Uniform Resource Identifier)
milab.sejong.edu

85 IPv6 IPv6는 IPv4가 갖고 있는 제약 사항인 주소공간의 부족, 멀티디어, QoS(Quality of Service) 처리 부족 등의 한계를 극복할 수 있는 인터넷 프로토콜로써 IPv4를 대체하게 될 것이다. IPv6(Internet Protocol version 6)는 1994년 7월 IETF(Internet Engineering Task Force) 회의에서 만들어진 IETF Ipng(Next Generation) Working Group에 의해서 1995년 9월 18일 표준이 제안되면서 만들어졌다. IPv4는 주소길이가 32비트이며 약 43억개 주소(232) 밖에 표현할 수 없기 때문에 인터넷의 이용의 확대에따라 조만간 주소가 고갈될 것이다. IPv6은 현재 널리 사용되고 있는 IPv4를 기본으로 하고 있다. 주소길이 변경 등, 기본적인 부분에는 영향이 있으며, TCP(Transmission Control Protocol)나 UDP(User Datagram Protocol)에 대한 영향은 작고, 그외의 상위계층에 대한 영향이 크지 않도록 유의하여 설계되어 있다. milab.sejong.edu

86 IPv6 표준화 주소 고갈 문제를 해결함과 동시에 향후 멀티미디어 서비스에 대응 가능한 기능 확장을 목적으로 IPv6 표준화가 다음 항목을 고려하여 진행되고 있다. 확장 주소 기능(Expanded Addressing Capabilities) 계층화, 자동구성 등의 주소기능을 확장하기 위해 IPv6의 주소 크기를 32비트의 4배인 128 비트로 한다. 또 멀티캐스트 경로의 확장성을 위해 "Scope" 필드가 멀티캐스트 주소에 부가된다. 노드(사용자) 그룹의 어느쪽에나 패킷을 보내기 위한 기능인 Anycast Address를 도입한다. 헤더 포맷 간소화(Header Fromat Simplification) 패킷의 처리를 간소화하기 위해 IPv4 헤더 필드의 일부를 삭제하기도 하며, 선택사항으로 한다. 확장/선택사항 추가기능(Improved Support for Extensions and Options) 효율적인 전송의 실현이나 향후 선택사항 추가를 쉽게 하는 기능을 부가한다. Flow Labeling 기능 실시간 서비스 등 송신자가 요구하는 트래픽 흐름에 관련한 패킷 라벨부착을 하는 기능을 부가한다. 인증/프라이버시 보호 기능(Authentication and Privacy Capabilities)  인증이나 데이터 숨김 등의 기능을 부가한다. milab.sejong.edu

87 IPv6 헤더 IPv6 기본헤더 milab.sejong.edu

88 IPv6 기본헤더의 기능 (1) Version (4 bit) Priority (4 bit)
각 IP 데이터그램의 첫 번째 네 비트는 IP의 버전을 포함한다. Priority (4 bit) 데이터그램의 우선순위를 정의하며 0에서 15사이의 값으로 발신 측에서 전송하 패킷에 대한 요구되는 우선순위 값을 지정한다. 우선순위 필드는 먼저 트래픽의 두가지 광범위한 형태 중에서 구별하고, 그리고 나아가서 각 트래픽 형태에서 관련된 우선순위를 세밀히 구별한다. 가장 광범위한 구별은 congestion-controlled traffic (0-7의 값)과 noncongestion-controlled traffic (8-15의 값)이다. 만약 발신자가 혼잡(congestion)을 발견하면, 속도를 줄임으로써, 시스템은 혼잡 상태를 완화하는 것을 돕는다. 혼잡-제어 트래픽을 위해, IP는 7가지의 구체적인 우선순위를 정의한다. (표 2-16 에 나타난 우선순위 값은 트래픽 IP 데이터그램의 우선순위 필드에 위치한다.) 8-15사이의 값은 congestion control(혼잡제어)를 제공하지 않는 트래픽에 대한 우선순위를 나타내는데 사용된다. 예를 들어 "실시간" 패킷이 일정한 속도로 전송되는데 사용된다. Noncongestion control(비혼잡제어)에 대해 가장 낮은 우선순위 값 8은 송신자가 혼잡 상황에서 가장 쉽게 폐기할 수 있는 패킷에 대해 사용된다.(eg. 높은 정밀도의 비디오 트래픽) 그리고, 가장 높은 우선순위 값 15는 송신자가 가장 폐기할 수 없는 패킷에 대해 사용된다. (eg. 낮은 정밀도의 오디오 트래픽) milab.sejong.edu

89 IP Priorities for Congestion-Controlled Traffic
no specific priority 1 background traffic(e.g., news) 2 unattended data transfer(e.g., ) 3 reserved for future definition 4 attended bulk transfer(e.g, file transfer) 5 6 interactive traffic(e.g, remote login and windowing systems) 7 control traffic(e.g, routing protocols and network management) milab.sejong.edu

90 IPv6 기본헤더의 기능 (2) Flow label (24 bit): Payload Length:
Flow label은 실시간 데이터(음성과 화상)처럼 서비스 연결에 대한 기본 이상의 품질을 제공하기 위해 사용된다. 기본 라우터를 처리할 때 흐름 레이블은 0으로 설정되고, 원본과 대상 사이에는 0이 아닌 별도의 Flow label로 구별되는 여러 흐름이  있을 수 있다. Payload Length: payload 길이는 IP 기본 헤더 그 자체보다는 적은, IP 데이터그램의 전체 길이 를 바이트 단위로 나타낸다. 이 필드는 16비트 크기이므로, 이것은 보통 IP 데이 터그램을 바이트나 더 적은 크기로 제한한다. hop-by-hop 옵션 확장 헤 더의 jumbo payload 옵션을 사용하여 더 큰 데이터그램을 보낼수 있다. 이 옵션 이 사용되면, payload 길이는 0으로 설정된다. Next Header (8bit): next header 필드는 어떤 헤더가 데이터그램에서 기본 IP 헤더 다음에 오는지 를 나타낸다. 그것은 옵션적 IP 헤더나 상위 계층 프로토콜을 나타낼 수 있다. 표 2-17은 주요한 next header 값을 나타낸다. milab.sejong.edu

91 IP Next Header Values Hop-by-hop Options Header 4 Internet Protocol 6
Hop-by-hop Options Header 4 Internet Protocol 6 Transmission Control Protocol 17 User Datagram Protocol 43 Routing Header 44 Fragment Header 45 Interdomain Routing Protocol 46 Resource Reservation Protocol 50 Encapsulating security Payload 51 Authentication Header 58 Internet Control Message Protocol 59 No Next Header 60 Destination Options Header milab.sejong.edu

92 IPv6 기본헤더의 기능 (3) Hop Limit (8 bit): Source Address (128bit):
이 필드는 얼마나 멀리 데이터그램이 여행할 것인지를 결정한다. 호스트가 데이터그램을 생성할 때 호스트는 Hop limit를 어떤 초기치로 설정한다. 데이터그램이 네트웍상의 라우터를 통해 여행할 때, 각각의 라우터는 이 필드를 1 씩 감소시킨다. 만약 데이터그램의 홉 리미트가 그것의 목적지에 도착하기 전에 0이 되면, 데이터그램은 버려진다. Source Address (128bit): Source address로 128 bit를 사용한다. Destination Address (128bit): Destination address로 128 bit를 사용한다. milab.sejong.edu

93 IPv6 확장 헤더 모든 IP 데이터그램은 기본 헤더로 시작한다. 대부분의 경우, 이 헤더는 데이터그램 을 적절하게 그것의 목적지에 이르게 할 수 있다. 예외로, IP는 그것의 기능을 추가 하기 위해 간단한 메카니즘을 제공한다. 추가적인 정보를 경로를 따라 목적지나 중간 시스템으로 나르기 위해, IP는 확장 헤더를 사용한다. 확장 헤더는 IP 데이터그램에서 기본 헤더 다음에 온다. IP 표준은 몇 개의 다른 확장 헤더를 정의한다. 각각은 next header 필드의 특정한 값에 의해 확인되어진다. 모든 확장 헤더는(59를 제외하고) 그것의 고유한 next header 필드를 가진다. 이러한 구조는 IP가 차례로 다수의 확장 헤더를 계속해서 배열할 수 있게 한다. 마지막의 확장 헤더는 그것의 next header 필드를 상위-레벨 프로토콜을 지정하기 위해 사용한다. 그림 2-29는 몇몇의 확장 헤더를 가진 데이터그램을 보여준다. 각각의 헤더가 authentication 헤더에 이르기까지 next header를 어떻게 지정하는지를 보면 확장헤더를 이해할 수 있다. authentication 헤더에서 next header 필드는 상위-레벨 프로토콜(이 경우에는 TCP) 를 지정한다. milab.sejong.edu

94 확장 헤더의 이용 milab.sejong.edu

95 IPv6 주소 체계 IPv6의 주소는, 16 비트 단위로 128 비트 어드레스를 갖으며, 콜론(:)에 의해 구분된다.
IPv6 주소 지정 아키텍처는 RFC 2373에 설명되어 있다.  IP version 표현 방법 IPv4 : : : 2 진수 표현 10 진수 표현 IPv6 : ~[중간생략] : 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A milab.sejong.edu

96 IPv6 주소의 문자열 표현 형식 기본 형식 '0'의 숫자열을 압축하는 형식
X:X:X:X:X:X:X:X Ex) FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 '0'의 숫자열을 압축하는 형식 각 16 비트 블록 내에서 앞에 나오는 " 0 "는 생략이 가능하다. 단, 블록 내에 최소한 하나의 숫자는 있어야 한다. Ex) 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A => 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A " 0 "으로 표시된 16 비트 블록의 연속을 " :: "으로 압축하여 표현 할 수 있다. Ex) FF01:0:0:0:0:0:0:43 => FF01::43 IPv4와 IPv6 node의 혼합환경을 취급하는 형식 X:X:X:X:X:X:d.d.d.d Ex) 0:0:0:0:0:0: => :: Ex) 0:0:0:0:0:FFFF:   => ::FFFF: milab.sejong.edu

97 IPv6 주소 종류 Unicast 주소 Anycast 주소 Multicast 주소
IPv6에는 broadcast 주소는 없고, 그 기능은 Multicast 주소로 대체 됐다. 현재 어드레스 공간의 15%는 초기 할당되어졌고, 나머지 85%는 미래를 위해 예약되 어 있다. milab.sejong.edu

98 IPv6의 새로운 기능 QoS (Quality Of Service) NDP(Neighbor Discovery Protocol)
IPv6에서 QoS의 지원은 IPv6 헤더의 Priority와 Flow Label  필드를 통해서 구현된다. NDP(Neighbor Discovery Protocol) IPv6 네트워크 환경 검색(ND)은 인접한 노드들 사이의 관계를 결정하는 메시지 및 프로세스 세트로서 ND(Neighbor Discovery)는 ARP(Address Resolution Protocol), ICMPv4 와 같은 IPv4 프로토콜을 대체하며 추가의 기능을 제공한다. ND는 ICMPv6(Internet Control Message Protocol verstion 6) 메시지를 사용한다. Auto Configuration 자동 설정 기능(Auto Configuration)은 사용자의 수동 설정이 없어도 라우터나 호스트 자체에서 주소를 설정하는 기능이다. 기본적으로 IPv6를 지원하는 호스트는 각 인터페이스마다 링크 로컬 주소(Link Local Address)를 구성할 수 있는데, 호스트는 라우터 검색을 사용하여 라우터의 주소, 다른 구성 매개 변수, 추가 주소 및 온링크 접두사를 결정할 수도 있다. Auto configuration에는 Stateless와 Stateful Address Autconfiguration 그리고 두 가지 형태가 함께 사용될 수도 있다. milab.sejong.edu

99 4.2 Mobile IP 사용자의 간섭을 최소로 하여 통신 중인 이동 컴퓨터가 안정적으로 데이터를 받을 수 있기 위한 새로운 네트워크 프로토콜이 필요하며, 이 프로토콜은 기존의 인터넷 프로토콜과 호환이 되어야 한다. Mobile IP는 컴퓨터가 자신의 IP 주소를 바꾸지 않고 자유롭게 이동하면서 통신할 수 있도록 기존의 IP를 확장한 프로토콜이다. Mobile IP는 IETF 의 Working Group에서 1992년에 제정하여 RFC2002를 통해 제안되었다. mobile IP는 크게 3개의 entity( home agent, foreign agent, mobile node)와 3가지 프로토콜 메커니즘(agent discovery, registration, routing)으로 구성된다. 이를 통해 mobile 호스트는 호스트가 네트웍주소를 바꾸며 이동하여도 자신의 고유 IP address를 그대로 사용할 수 있다. milab.sejong.edu

100 Mobile IP 의 구성 Mobile Node : 다른 네트워크로 이동하여 서비스를 받고자 하는 PC, Nodebook, PDA, PCS등 시스템을 총칭 Home agent : Mobile node가 원래 속해 있던 네트워크의 라우터 Foreign agent : Mobile node가 이동할 네트워크의 라우터 Home address : Mobile node가 원래 속해 있던 네트워크에서 사용하고 있던 IP주소 Care of address : Mobile node 가 다른 네트워크로 이동할 경우, Foreign agent로부터 받아 사용할 주소 Mobility agent : Home agent또는 foreign agent milab.sejong.edu

101 Mobile IP 의 기본 메커니즘 milab.sejong.edu

102 care-of address 발견하기 Home agent, Foreign agent는 Mobile node의 이동을 확인하기 위해 지속적으로 ICMP 메시지를 전송하게 되며, Mobile Node가 이동하여 이 메시지를 받게 되면 이를 통해 Care of address를 구하게 된다. 이러한 agent advertisement 과정은 다음의 기능을 수행하게 된다. mobility agents 탐지 (즉, 자신이 현재 Home Network에 연결되어있는지 Foreign Network에 연결되어 있는지 결정) 사용가능한 care-of addresses 제시 Foreign agent가 제공할 수 있는 추가 기능(encapsulation technique 등)에 대하여 mobile node 에게 통지 Mobile node의 network number와 Internet에 대한 접속 상태를 결정 Mobile node가 home network에 접속했는지, foreign network에 접속했는지 알수 있도록 함 milab.sejong.edu

103 care of address 등록하기 / 3) Tunneling to the care-of address.
Mobile node가 care of address를 알게되면, 이를 Home agent에 알려주는 등록(registration) 과정을 거치게 된다. 이때, Mobile node가 직접 할 수도 있으며, foreign agent을 통해 할 수도 있다. Tunneling to the care-of address Home agent가 Mobile node에게 메시지를 전송하기 위해 원래의 IP Header앞에서 tunnel header를 덧붙여 care of address까지 터널링하여 전송 후, foreign agent에서 Mobile node로 전송하게 된다. milab.sejong.edu

104 IPv6에서의 변화 Mobile node, Home agent 의 구성은 변화가 없으나, care of address를 IPv6의 Stateless Address Autoconfiguration과 Neighbor Discovery를 통해 구성할 수 있으므로 Foreign agent가 필요없게 된다. 따라서, Care-of-address의 발견(discovering) 및 등록(registering mechanism)도 불필요하게 된다. 그러나, Home agent와 Mobile node 사이의 메시지 전송을 위한 encapsulation 과정은 계속 필요한다. 이를 위한 노력은 Mobile IPv6라 부르며 별도의 표준화 노력이 진행되고 있다. milab.sejong.edu


Download ppt "2장. 프로토콜 1. 네트워크프로토콜 표준 2. TCP/IP 프로토콜 2.1 네트워크 액세스 계층 2.2 인터넷 계층"

Similar presentations


Ads by Google