제 22 장 인터넷

22.1 개요

* 인터넷은 군 관련 기관 및 대학간의 정보 공유를 위해 미국방성 ARPA(Advanced Research Projects Agency) 에 의해 추진되어 1969 년 구현 ARPANET 에 그 기원을 둔다.

* ARPAnet 에서 전화선과 같이 저속이고 신뢰도가 낮은 회선을 사용하면서 넓 은 영역의 네트워크를 구축하기 위한 프로토콜 로서 개발된 것이 TCP/IP 이 다. 【그림 22.1】

* 1996 년 현재 인터넷은 150 여개국에서 6 만개 이상의 네트워크에 약 400 만대이상의 컴퓨터가 연결되어 있다. 이와 같이, 세계적으로 산재되어 있는 네트워 크를 상호 연결하여 하나의 인터넷을 구성하기 위해서는 Internetworking 이 필요 하다.

* 인터넷에서 사용한 internetworking 방식은 【그림 22.2】와 같이 모든 호스트 에 TCP/IP 프로토콜을 설치하는 것이다.

* 호스트 A 가 송신한 데이터는 IP 계층 에서 목적지(호스트 B) 의 IP 주소를 지정한 IP 데이터그램을 구성한다. 이 데이터그램은 LAN 1 프로토콜로 encapsulation 되어 게이트웨이 1 으로 전달되고 게이트웨이는 LAN 1 의 헤더 를 벗겨 호스트 A 가 송신한 IP 데이터그램을 수신한다. 게이트웨이 1 은 다시 이 데이터그램을 X.25 프로토콜로 encapsulation 하여 게이트웨이 2 로 전달 하고 게이트웨이 2는 다시 원래의 IP 데이터그램을 얻어 LAN 2 프로토콜로 encapsulation 하여 전달한다. 호스트 B 는 LAN 2 프로토콜과 관련된 헤더를 처리하여 호스트 A 가 송신한 데이터그램을 수신하고 IP 헤더와 관련된 기능 을 처리한 후 상위 계층인 TCP 계층 으로 전달한다.

* 이와 같은 방법으로 전 세계적으로 산재되어 있는 컴퓨터가 상호 접속 되어 하나의 터넷을 형성한다.

* 【그림 22.3】은 국내 인터넷의 연결 구조이다.

22.1 TCP/IP 프로토콜

* TCP/IP 프로토콜은 전 세계적으로 산재 되어 있는 수많은 종류의 컴퓨터들간 에 통신 기능을 제공하기 위해 만들어졌다.【그림 22.4】

* TCP/IP 는 OSI 참조 모델로서는 계층 4/3 에 해당되는 프로토콜로서 호스트 (host)간의 신뢰성 있는 통신 기능을 제공한다.

* TCP/IP 프로토콜에서 IP 는 패킷을 목적지로 전달하는 데에 주력하지만 신뢰 성을 보장하지는 못하는 반면 TCP 는 신뢰성 있는 통신 기능을 제공한다.

*【그림 22.5】는 TCP/IP프로토콜 에서의 encapsulation 및 decapsulation 과 정을 나타낸다.

*【그림 22.5】에서와 같이 각 계층이 PDU 는 독립적인 이름을 갖는다.【그림 22.6】

* TCP/IP 프로토콜을 사용하는 인터넷에서는 물리적인 네트워크로 이더넷을 가 장 많이 사용하지만 토큰 링이나 FDDI 도 사용 가능하다.

* 인터넷 프레임의 구조는【그림 22.7】과 같다.

* 6 옥텟의 인터넷 주소가 FF-FF-FF-FF-FF-FF인 경우는 방송형 주소로 네트 워크상의 모든 호스트에 프레임이 전달된다.

*【그림 22.8】은 IP프레임 포맷을 나타낸다.

* VERSION 은 IP 프로토콜의 버전을 표시한다. 기존 IP 프로토콜의 버전은 4 이고 1993 년부터 버전 6 의 IP 프로토콜이 개발되었다. 버전 4 의 IP 프로토 콜 IPⅴ4라하고 버전 6 의 IP 프로토콜을 IPⅴ6 혹은 IPng 라고 한다.

* HLEN 은 선택 사항 필드를 포함한 헤더의 길이를 지정하고 단위는 32비트이 다. 헤더의 최소 길이는 5 이며 헤더 길이 필드가 4 비트 이므로 최대 헤더 길 이는 60바이트(헤더 길이 필드가 15)가 된다.

* Type of Service는 데이터 전송에 필요로 되는 서비스 품질을 표시한다. 이 필 드는 8 비트의 길이로【그림 22.9】와 같이 구성된다.

* Total Length 는 헤더와 데이터를 포함한 전체 IP 데이터그램의 길이를 나타 낸다. 단위는 8 비트이다. 이 필드는 16 비트 이므로 IP 데이터그랩의 길이는 최대65,535 바이트가 된다.

* Identification 은 호스트간에 동시에 설정된 다수의 TCP/IP 연결에서 특정 연 결에 속한 뎨이터그램을 식별하는 용도로 사용된다. 이 필드는 송신 호스트에 의해 할당되며 데이터그램을 조각(fragmentation)내어 송신하는 경우 각 조각 은 동일한 Identification 값을 갖는다. 수신 호스트의 IP 는 이 필드를 근거로 데이터그램의 조각을 재결합 한다.

* Flags는 fragmentation 과 관련된 플래그를 설정한다. 【그림 22.10】

* Fragment Offset 은 데이터그램에서 조각이 속해 있는 위치를 표시한다.단위 는 64 비트이고 첫 번째 조각은 0 의 값을 갖는다.

* Time to Live 는 데이터그램이 경유할 수 있는 라우터의 최대 개수를 의미하 며이는 데이터그램이 인터넷에 남아 있을 수 최대의 시간을 나타낸다. 이 필드 의 값이 0 이 되면 데이터그램은 인터넷에서 파기되며 ICMP 메시지는 파기된 데이터그램의 발신 호스트로 이를 알린다. 이 필드의 목적은 데이터그램이 라 우팅 루프(loop)에 빠지는 것을 방지하기 위함이다.

* Protocol은 상위 프로토콜 중 어느 프로토콜 IP 데이터그램의 전송을 의뢰했는 지를 식별한다.

* Header Checksum 은 헤더를 16 비트 정수의 집합으로 간주하고 모든 헤더 필 드에 대하여 1 의 보수 합을 취한 후 결과의 합에 대하여 다시 1 의 보수 값을 취한다.

* Source Address 는 발신 호스트의 IP 주소

* Destination Address 는 착신 호스트의 IP 주소

* Options 은 가변길이를 갖으며 데이터그램에 포함되지 않을 수도 있다. 현재 정의된 선택 사항으로는 보안,레코드 라우트,시각 소인(time stamp) 등이 있다.

* Padding 은 헤더의 전체 길이를 4 바이트의 정수배로 구성하기 위해 0을 삽입

22.3 인터넷 주소( Internet Address)

* 인터넷상의 모든 호스트에는 유일한 인터넷 주소가 할당된다.

* 인터넷주소는 【그림 22.11】과 같이 5 개의 클래스(class)로 분류된다.

* 클래스 A 주소의 첫 번째 비트는 0 이며 7 비트는 네트워크 주소로 24 비트는 호스트 주소로 사용된다. 그러므로, 128 개의 네트워크와 네트워크 당 16,777,216 개의 호스트를 가질 수 있다.

* 클래스 B 주소는 10 으로 시작되며 14 비트는 네트워크 주소로 16 비트는 호 스트 주소로 사용된다.

* 클래스 C 주소는 110 으로 시작되며 21 비트는 네트워크 주소로 8 비트는 호 스트 주소로 사용된다.

* 클래스 D 주소는 1110 으로 시작되며 이 주소는 다중 전송용(mullticast) 주소 로 사용된다.

* 클래스 E 주소는 11110 으로 시작되며 이 주소는 장래의 용도로 예약되어 있 다.

*【그림 22.12】은 각 클래스 별 IP 주소를 나타낸다.

* 인터넷 상의 모든 호스트에는 유일한 주소가 할당되어야 하므로 이를 관장하는 조직이 필요하며 이 조직을 Internet Network Information Center (InterNIC)라 고 한다. 우리나라에도 한국망관리센터(KRNIC:Korea NIC)가 있어서 우리나라 를 나타내는 Kr 도메인을 관리한다.

* InterNIC 은 단지 네트워크 ID 만 할당하고 호스트 ID 의 할당은 호스트 관리 자가 할당한다.

* 우리나라도 이를 관할하며 한 기관이 최초로 인터넷에 접속하기 위해서 는 먼저

22.3.1 서브넷(Subnet)

* IP 주소의 호스트SubnetSubnet 부분을 네트워크 부분으로 변경하는 것이 가능 하며 이런 관정을 거쳐 새로이 형성된 네트워크 비트는 네트워크 내에서 하나의 네트워크를 형성하며 이러한 네트워크를 subnet 이라 한다.

* Subnet 은 Subnet mask 이라 불리우는 비트 마스크를 IP 주소에 적용 함으로 서 정의된다. 즉, 마스크의 비트가 1이면 상응되는 비트는 네트워크 비트로 인 식되고 마스크의 비트가 0 이면 대응되는 비트는 호스트 비트로 인식된다.

* Subnet 은 국부적으로 정의되는 것이며 Internet 의 다른 장치에게는 표준화된IP 주소로 인식된다.

* 예를 들어,클래스 B 주소 방식에 subnet mask 로 2555.2555.2555.0 을 적용하 면 클래스 B의 표준 방식에서 호스트 주소로 인식되던 3 번째 바이트가 네트 워크 주소로 인식된다. 즉, 처음의 두 바이트는 클래스 B 네트워크를 정의하고 세 번째 바이트 및 네 번째 바이트는 각각 서브넷 주소와 서브넷 주소 내의 호 스트 주소를 의미한다.

*【그림 22.13】은 다양한 서브넷 마스크의 예를 나타낸다.

22.3.2 Routing Table

* 호스트에서 수행되는 라우팅 기능은 다음과 같다.

- 착신 호스트가 동일한 네트워크에 존재하는 경우는 직접 착신 호스트로 데 이터 전송

- 착신 호스트가 원격 네트워크에 존재하는 경우는 게이트웨이로 데이터 전송

* 라우팅은 네트워크를 기반으로 수행되므로 IP 는 IP 주소의 네트워크 부분을 참조하여 라우팅 기능 수행

* 발신 호스트(128.66.12.2)가 착신 호스subnet mask트subnet mask(128.66.1.2)로 데이터를 송신하는 경우 발신 호스트는 우선 128.66.1.2 의 128 을 기준으로 클 래스 B가 적용되었고 128.66 이 네트워크 주소임을 인지한 후 서브넷 마스크( (subnet mask)를 조사(네트워트 128.66.0.0 은 255.255.255.0 으로 마스크 되었 다고 가정)하여 발신지의 네트워크 주소가 128.66.1.0 임을 최종적으로 인지

* 발신 호스트의 라우팅 테이블은 128.66.1.0 에 대한 경로로 게이트웨이 128.66.12.3 을 지시하고 게이트웨이의 라우팅 테이블은 128.66.1.0 에 대해 128.66.1.5 인터페이스를 지정

* 라우팅 테이블은 종단간 경로를 지정하는 것이 아니라 목적지에 도달하기 위 한 다음번 게이트웨이만(이를 next hop)을 지정한다.

* 송신 호스트는 데이터의 전달을 위하여 자신의 로컬 게이트웨이에 의존하고 로컬 게이트웨이는 다른 게이트에 의존하는 방식으로 라우팅이 수행된다. 【그림 22.14】

22.3.3 Protocols, ports, and Sockets

* 데이터가 네트워크를 통해 착신 호스트에 도달된 후 데이터는 호스트의 정확 한 사용자 혹은 프로세서에 정확하게 전달되어야 한다.

* 호스트에서 다수의 응용 프로그램이 적은 수의 전달 프로토콜을 이용할 수 있 으며 이것은 전달 계층이 다중화(multiplexing)기능을 제공함을 의미한다. 네 트워크 로부터 수신된 데이터는 다수의 프로세서로 역다중화(demultiplexing) 된다.

* 이러한 과정을 위해 IP 는 프로 콜 번호(protocol number)를 사용하여 다수 의 전달 프로토콜 중 하나를 선택하고 포트 번호(port number)를 사용하여 다 수의 응용 프로세서 중 하나의 프로세서를 지정한다.

* 잘 알려진 포트(well-known port) 는 TELNET 과 같이 모든 호스트에서 사 용되는 프로그램(프로세스)이다.

* 이와 대조되는 포트 번호로 동적 할당 포트(dynamically allocated port)가 있 다. 이것은 사전에 고정적으로 할당된 포트 번호가 아니라 필요한 경우 할당 되는 번호로 호스트는 동일한 포트 번호가 두 개 이상의 프로세스에 할당되 지 않게 하는 기능이 필요하다.

* 동적 할당 포트는 다수의 사용자가 통신을 동시에 수행하는 경우에 효율적이 다. 즉, TELNET 사용자가 포트 번호 23 으로 통신하고 있는 경우 다른 사용 자가 TELNET 을 사용하고자 하는 경우 어떤 번호가 할당 되어야 하는가? 이러한 상화아에서 중요한 것은 모든 연결을 유일하게 지정하기 위해 발신 포 트는 동적으로 할당하고 착신 포트를 잘 알려진 포트 번호로 할당 하는 것이 다.

* TELNET 을 예로 들어, 처음 사용자에는 랜덤한 포트 번호를 발신 장치에 할 당하고 착신 장치에는 잘 알려진 포트 번호, 23, 을 할당 한다. 두 번째 사용자 에는 상이한 랜덤 포트 번호를 발신 호스트에 할당하고 동일한 포트 번호를 착 신 호스트에 할당 함으로서 각각의 연결을 발신 포트 번호와 착신 포트 번호의 쌍으로 구별한다.

* 착신 호스트는TCP 세그먼트의 헤더와 UDP 패킷의 헤더에 포트 번호가 주어 지므로 이를 인지하게 되고 발신 호스트는 착신 호스트의 포트 번호가 잘 알려 진 번호이므로 인지하게 된다.

* IP 주소와 포트 번호의 조합을 소켓(socket)이라 하며 이는 인터넷 상에서 하 나의 네트워크 프로세스(process)를 유일하게 지정한다.

22.3.4 APR(Address Resolution Protocol)

* TCP/IP 는 IP 주소만 참조하여 라우팅을 하고 인터넷 이나 토큰 링과 같은 네 트워크는 자신의 네트워크 주소를 갖는다. 따라서, IP 데이터그램의 IP 주소에 해당되는 네트워크 주소를 알아야 IP 데이터그램을 네트워크를 통해 전달할 수 있다. 이와 같이, IP 주소에 해당되는 네트워크 주소를 알아내는 프로토콜을 APR라 하고 그 역과정이 프로토콜을 RAPR(Reverse Address Resolution Protocol)라 한다. 【그림 22.15】

* ARP 프로토콜은 ARP Request 와 ARP Reply 에 동일한 프레임을 사용한다.

【그림 22.16】

* ARP 는 주소 해석을 위해 다음과 같은 ARP테이블을 운용한다.

IP주소	인터넷 주소
128.1.1.1	08-00-39-00-2F-C3
128.1.1.2	08-00-5A-21-A7-22
128.1.1.3	08-00-10-99-AC-54

* AARP 는 ARP 테이블에서 IP 주소에 해당되는 네트워크 주소를 찾지 못한 경 우 다음의 과정을 통해 네트워크 주소를 알아낸다.

* 송신 호스트는 다음의 필드 값을 갖은 ARP Request 패킷을 구성한다.

발신 IP 주소	128.1.1.1
발신 인터넷 주소	08-00-39-00-2F-C3
목적지 IP 주소	128.1.1.4
목적지 인터넷 주소	0으로 채운다

*방송형 인터넷 주소

FF-FF-FF-FF-FF-FF)를 사용하여 네트워크 상의 모든 호스트에 ARP Request 패킷을 전송한다.

* 네트워크의 모든 호스트는 방송된 ARP Request 패킷을 수신하고 인터넷 계 층에서는 프레임 내의 타입 필드를 조사하여 ARP 모듈로 수신된 프레임을 전 달한다.

* ARP 모듈에서는 목적지 IP 주소가 자신의 IP 주소와 일치하는지 조사한다.

* 조사 결과 일치하면 다음과 같은 ARP Reply 패킷을 구성하여 발신 호스트로 전송한다.

발신 IP 주소	128.1.1.4
발신 인터넷 주소	08-00-39-00-2F-C3
목적지 IP 주소	128.1.1.1
목적지 인터넷 주소	08-00-39-00-2F-C3

* ARP Reply를 수신한 발신 호스트의 ARP 모듈은 착신 호스트의 인터넷 주소를 기반으로 ARP 테이블을 갱신한다.

IP주소	인터넷 주소
128.1.1.1	08-00-39-00-2F-C3
128.1.1.2	08-00-5A-21-A7-22
128.1.1.3	08-00-10-99-AC-54
128.1.1.4	08-00-28-00-38-A9

22.4 ICMP(Internet Control Management Protocol)

22.4.1 기능

* Internet 계층의 일부로 제어 기능 및 오류 보고 기능 등을 수행한다.

(1)흐름 제어(Flow Control)

* 데이터그램이 수신부의 처리 속도에 비해 빨리 도착하면 착신 호스트 혹은 게 이트웨이는 송신 호스트로 Source Quench Message라고 하는 ICMP 메시지를 송신하고 이를 수신한 발신 호스트는 일시적으로 데이터그램의 송신을 중단한 다.

* ICMP 메시지 에는 타입(type)과 코드(code)필드가 있으며 이 필드 값에 따라 상이한 기능의 ICMP 메시지가 된다. 상기의 Source Quench Message도 ICMP 메시지의 하나 이다.

(2) 도달 불가 목적지 검출

* 목적지에 도달할 수 없는 IP 주소를 인식한 장치는 발신 호스트로 DestinationUnreachable Message라고 하는 ICMP 메시지를 송신한다.

(3) 경로 재 배정

* 게이트웨이는 더욱 효율적인 경로 설정을 알리기 위해 발신 호스트로 ICMP Redirect Message를 송신한다.

(4) 원격 호스트 조회

* 임의의 호스트는 ICMP Echo request 메시지를 사용하여 원격지 호스트의 Internet Control이 정상적으로 동작 하는가를 조회 한다. 이를 수신한 장치는 동일한 ICMP 메시지를 발신 호스트로 송신 함으로서 정상 동작임을 알린다.

* 이 메시지는 인터넷 상의 PC나 워크스테이션 에서 목적지 호스트가 정상 동 작하는 지를 알기 위한 명령어인 ping을 실행하면 생성된다.

22.4.2 메시지

* ICMP 메시지는 IP 데이터그램 내에서 송신된다.【그림 22.17】

*【그림 22.18】은 ICMP 메시지 형태를 나타낸다.

*【그림 22.19】은 다양한 ICMP 기능을 수행하는 ICMP 메시지 타입을 나타낸 다.

22.5 DNS(Domain Name

System)

* DNS 는 호스트명과 IP 주소간의 대응 관계를 나타내는 분산형 데이터베이스 로서 전자 메일(E-Mail)의 라우팅 정보를 제공한다.

* 분산형의 단어를 사용한 이유는 인터넷상의 어떠한 특정 사이트(site)도 인터넷 전체의 모든 라우팅 정보를 알 수 없기 때문이다.

* 각 사이트(대학,회사,연구기관 등)는 자체적으로 데이터베이스를 구축하고 자신 의 데이터베이스에 없는 정보에 대해서는 서버(server)프로그램을 이용하여 인 터넷상의 다른 시스템의 클라이언트(cilent)에 필요한 내용을 요청한다.

* DNS 의 호스트명 지정 방식, name space, 은【그림 22.20】와 같이 계층적 구조를 갖는다.

* 노드(호스트)의 domain name 은 이 노드에서 시작 하여 루트(root)까지의 label 리스트(label간은 마침표로 구분)를 나타낸다.

* 트리내의 모든 노드는 유일한 domain name을 갖어야 하지만 트리 내의 다른 지점에서는 동일한 label을 사용 해도 무방 하다.

* 마침표로 끝나는 domain name 을 absolute domain name 혹은 fully qualified domain name(FQDN)이라 한다. 예를 들면 sun.tuc.noao.e여.

* Top-level domain 은 3 분야로 분류 된다.

#주소-이름 매핑용 특수 domain 인 arpa

#3 문자로 구성되는 generic(7 종류가 있음)【그림 22.21】

#2 문자로 구성된 국가 코드로서 county 혹은 geographical domain 이라 한 다.(IS0 3166 에서 규정)

* 예를 들어, gdhong@markting.apple.com 인 경우 gdhong 은 사용자 명, marketing 은 서브 도메인 명, apple 은 도메인 명, com은 최상위 도메인 명 이다.

22.5 라우팅(routing)프로토콜

* IP 데이터그램을 라우팅하기 위한 라우터간의 프로토콜로서 Interdomain 라우 팅과 Intradomain라우팅 프로토콜로 분류된다.

* Interdomain 라우팅 프로토콜은 FGP(Exterior Gateway Protocol)또는 BGP를 사용하고 Intradomain 라우팅 프로토콜은 OSPF(Open Shortest Path First),IGRP,RIP(Routing Information Protocol), IS-IS 등이 있다.

22.7 IPng(Internt Protocol next generation)

22.7.1 필요성

* IP 클래스 B 주소 공간의 소진(94 년 말)

* 비 계층적 구조 방식에 의해 라우팅 테이블의 요소가 과다해짐

22.7.2 헤터 형태

* IPng의 헤더 형태가【그림 22.22】에 나타나 있다.

* 버전은 6이 됨.

* Flow level은 IPⅴ4 의 Type of Service 필드를 확장한 것으로 0∼31은 기존 IP Type of Service를 나타내고 32∼228-1 까지의 값은 발신 주소와 병행하여 자원예약 등에 활용된다.

* 주소 체계는 계층적( Administration domain ID +Network ID+Host ID)구조를 갖는다.

* Version은 인터넷 프로토콜의 버전으로 6의 값을 갖는다.

* Prio은 우선순위 값을 나타낸다.

* Flow Label 은 기본이 아닌(non-default)서비스 품질이나 실시간 서비스와 같 이 송신자가 특별한 처리를 요구하는 기능을 지정한다.

* Payload Length는 헤더 이후의 데이터 길이로 단위는 옥텟이다.

* Next Header는 헤더 바로 다음에 오는 헤더의 형태를 나타낸다. 사용되는 값 은 IPⅴ4 헤더 프로토콜 필드의 값과 동일하다.

* Hop Limit는 IPⅴ4의 time to Live와 동일한 개념이다.

*【그림 22.23】는 IPng의 확장 헤더 구조 이다.

22.8 TCP(Transmission Control Protocol)

22.8.1 개요

* 트랜스포트 계층에 해당하는 프로토콜

* 연결형 서비스를 상위계층에 제공

* 연결형의 의미는 데이터를 전송하기 전에 TCP 연결이 설정되어야 함을

* TCP는 IP의 상위 계층이므로 TCP 데이터는 IP 데이터그램에 encapsulation된다.【그림 22.24】

*【그림 22.24】에서 보는 바와같이 TCP 세그먼트(segment)는 TCP 헤더와 TCP데이터로 구성 된다.

22.8.2 헤더 형태

*【그림 22.25】는 TCP의 헤더 형태를 나타낸다.

* 포트 번호(port number)필드는 TCP를 사용하는 응용 프로세스(process), 예를 들어 FTP, RLOGIN, Mail 등을 지정 한다. 송수신부 각각의 포트번호화 IP헤 더의 송수신부 IP 주소는 일의적인 TCP 연결(connection)을 결정 한다. IP 주 소와 포트 번호의 조합을 소켓(socket)이라고 한다.

* 순차 번호( sequence number)필드는 송신 TCP 로 부터 수신 TCP로 송신되는 데이터 스트림(stream)중 첫 번째 바이트를 지정한다. (예를 들어, 세그먼트가 순차 번호 1-1024의 바이트로 구성된 경우 1 이 순차 번호로 사용, 다음의 세 그먼트는 1025-2048로 구성되고 이 경우는 1025가 순차 번호가 됨),순차 번호 필드는 32비트 이므로 232-1의 순차 번호 후 0 부터 다시 시작한다.

* 새로운 연결이 설정되면 SYN 필드는 on이 되고 송신부는 해당 연결에 대해 사용될 순차 번호, Initial Sequence Number(ISN)를 결정 한다.

* 송신 호스트가 송신하는 첫 번째 바이트의 순차 번호는 ISN+1 이 된다.(이유는 SYN 플래그가 ISN을 사용)

* 응답번호( acknowledgment number)는 송신부가 수신부로 부터 수신하기를 기 대하는 순차 번호 이다. 즉, 이전에 성공적으로 수신한 바이트의 순차 번호에 1 을 더 한 값 이다.

* 응답 번호 필드는 ACK 플래그가 on 인 경우에 한해서 유효 하다.

* 헤더 길이(header length)는 글자 그대로 헤더의 길이를 나타내는데 사용되며 이것은 헤더의 구성 요소 중 옵션(option)필드의 길이가 가변적 이므로 필요로 된다. 헤더의 길이의 값은 4 바이트 단위로 계산 되어 총 4비트가 헤더 길이 필드에 할당되므로 헤더 길이는 60바이트로 제한된다.

* 6 개의 플래그 비트가 제공 되며 동시에 각 비트가 on이 될 수 있다.

# URG 긴급(urgent)데이터가 송신됨을 수신부에 알리기 위함

# ACK 응답 필드가 유효함을 나타냄

# PSH 수신부는 가능한 한 신속히 수신 데이터를 상위 계층에 전달해양 함 을 나타냄

# RST 설정된 연결을 리셋함을 나타냄

# SYN 새로운 연결을 시작하기 위해 송,수신부 간에 순차 번호를 동기화(  초기화)함

# FIN송신 되는 데이터의 끝을 나타냄

* 윈도우 크기(window size)필드는 흐름 제어(flow control)에 사용되며 수신 부가 응답 번호 필드에서 지정한 번호 부터 수신할 수 있는 바이트의 수를 표시한다. 16비트가 해당 필드에 할당되어 있으므로 65535 바이트로 한정 된다.

* Checksum 필드는 TCP 세그먼트에 대한 오류 제어용 이다. 송신부는 TCP 세그먼트를 기반으로 checksum을 계산하여 해당 필드에 실고 수신부는 수신된 TCP 세그먼트를 기반으로 송신부와 동일한 checksum 과정을 거쳐 전송상의 오류 발생 여부를 감지 한다.

* Urgent point는 URG 플래그가 세트된 경우에 한해 유효하며 일반 데이터 내 에 포함된 긴급 데이터를 지시하기 위하여 사용된다. 순차 번호에 해당 필드의 값을 더한 번호가 긴급 데이터의 마지막 바이트를 지시한다.

* 가장 공통으로 사용되는 옵션(option)내용은 최대 세그먼트 사이즈, Maximun Segment Size(MSS)에 대한 내용 으로 연결과 관련된 송수신부 각각은 상호 교환 되는 첫 번째 세그먼트에서 옵션 필드를 이용하여 자신이 수신하기를 원 하는 최대 세그먼트 사이즈를 지정한다.

22.8.3 연결 설정 과정

* TCP 연결을 설정하기 위해

① 클라이언트는 연결 설정을 원하는 서버의 포트 번호(port number)와 클라이 언트의 ISN (예를 들어, 1415531521)을 지정한 SYN 세그먼트를 서버에 송 신 하고 이 세그먼트를 세그먼트 1로 칭 한다.

② 서버는 자신의 ISN 을 포함한 SYN 세그먼트(세그먼트 2)로 응답 함과 동 시에 클라이언트의 ISN에 1 을 더한 값으로 클라이언트 SYN 세그먼트에 응답한다.

③ 클라이언트는 서버의 ISN 에 1 을 더한 값으로 세그먼트 2 에 응답(세그먼 트 3)한다. 이상의 3 세그먼트로 TCP 연결이 설정되며 이것을 three-way handshake라 한다. 【그림 22.26】

22.8.3 연결 해지 과정

* TCP 연결은 양방향 통신 이므로 각 방향 에서 연결 해지 과정을 시도할 수 있다.

* 【그림 22.25】의 세그먼트 4(FIN)는 연결 해지를 의미하고 Telnet 과 같은 상 위계층의 프로세스가 연결 종료를 시도하는 경우 송신 된다. FIN 역시 SYN 과 마찬가지로 하나의 순차 번호를 사용 한다.

* 이를 수신한 서버의 TCP는 이를 상위 계층에 알리고 상위 계층은 연결 종료 기능을 수행하여 TCP계층이 FIN(세그먼트 6)을 클라이언트 TCP에 송신하게 한다.

* 이를 수신한 클라이언트 TCP는 수신된 FIN의 순차 번호에 1을 더한 값으로 FIN 세그먼트에 응답 한다.(세그먼트7)

22.8.5 Sliding Window Protocol

* 흐름 제어(flow control)방식의 일종 이다.

* 송신부가 새로운 블록을 송신하기 전에 반드시 이전에 송신한 블록에 대한 응 답을 기다려야 하는 흐름 제어 방식을 정지후대기 방식(stop-and-wait)이라 한 다.

* Slliding window 방식은 수신부로 부터 응답을 기다리지 않고 다수의 블록을 송신하는 방식으로 때마다 매번 수신부로 부터 응답을 기다리기 위해 정지하지 않으므로 고속의 데이터 전송이 가능하다.

22.9 UDP(User Data Program)

* UDP 는 512 옥텟 이하의 메시지를 긴급히 전달하는데 사용되어 지는 비연결 형 전달 프로토콜이다.

* 연결 설정 과정이 필요 없으므로 메시지 전달이 신속히 이루어진다.

* 【그림 22.27】은 UDP 헤더를 나타낸다.

22.10 서비스

* 전자우편(E-Mail) : 전세계 145 개 국가의 인터넷 가입자와 전자우편을 주고 받을수 있는 기능

* 파일전송(FIP) : 인터넷에 연결된 호스트간에 화일을 보내고 받을 수 있는 기 능

* 원격 접속(Telnet, Rlogin): 원격지에 있는 호스트에 접속하여 사용할 수 있는 기능

* 전자게시판(Usenet, Network News): 정치,경제,사회,문화 등 전분야별 기사나 정보를 교환할 수 있는 기능

* 【그림 22.28】은 검색 서비스의 종류를 나타낸다.

22.10.1 Gopher

* 대학의 캠퍼스간에 정보를 공유하는 CWIS(Campus Wide Information System)로서 미국의 미네소타 대학에서 개발되었다.

* 계층적 메뉴 형식의 인터페이스를 가지며 표시되어 있는 각 메뉴의 항목을 선 택함으로서 원하는 정보를 얻을 수 있다. 【그림 22.29】

* 각 메뉴의 항목은 텍스트,비디오,오디오 라고 하는 데이터 이외에 다른 Gopher 서버,telnt, fip 등의 서비스에 링크 되는 항목도 있다.

* 메뉴를 순차적으로 눌러야만 필요한 정보를 얻을 수 있다는 불편함을 해결하기 위해 키워드(key,word)를 입력하면 관련된 메뉴 항목이 표시되는 Veronica 라 고 하는 검색 시스템도 제공한다.

22.10.2 WWW(World Wide Wed)

* 엄청난 양의 연구 정보를 효율적으로 공유하기 위한 목적으로 스위스의 C CERN(The Europen Laboratory for Particle Physics)연구소에서 1989년 3 월 에 연구가 시작되었다.

* 텍스트 문서,그림, 음성, 오디오,MPEG화상 등의 정보를 하나의 문서 형태로 통 합적으로 취급한다.

* Gopher에서와 같은 Tree 개념에서 벗어나 하이퍼링크(Hyperlink)개념을 도입 하였다.하이퍼링크를 통해 관련된 정보가 서로 연결되기 때문에 문서 검색이 용이하다.

* 하이퍼링크 되어 있는 단어들과 함께 일반 텍스트로 되어 있는 문서를 하이퍼 텍스트(Hypertext)라고 한다.

* 이러한 문서는 SGML(Standard Generalized Markup Language)의 서브셋인 HTML(Hyper Text Markup Language)로 기술되며 HTML로 기술된 문서는 확장자가 html이다.

* WWW 서버와 클라이언트 간의 하이퍼텍스트 문서의 송수신은 HTTP(Hyper Text Transfer Protocol)이라는 통신 프로토콜을 통해 수용 된다.

* 세계에 산재하는 하이퍼텍스트 문서의 위치를 지정할 수 있게 하는 것이 URL(Uniform Resource Locator)이다.

* URL은 사용할 규약(fip,telnet,http,gopher 등) 및 하이퍼텍스트가 존재하는 호 스트 이름, 포트 번호, 디렉토리, 하이퍼텍스트 이름 등으로 구성된다. 예를 들 어,http://www.whithous 혹은 http://www.mindspring.com/royal/olympic.html

* WWW 클라이언트는 웹 브라우저(Wed browser)라고 불리는 검색 프로그램을 이용하여 웹서버의 정보를 액세스 한다.

* 대표적인 웹 브라우저 로는 미국 Netscape 사의 nestcape와 마이크로소프트사 의 explorer 그리고 hotjava 등이 있다.

* 웹 브라우저에서 접속하고자 하는 서버의 URL 을 기입하면 해당 서버에 접속 되어 필요한 정보를 수신할 수 있다.

* Gopher와 마찬가지로 필요한 정보가 어디에 존재 하는가를 알기가 극히 어렵 기 때문에 정보 검색을 용이하게 해주는 검색 프로그램이 개발되고 있다. 대표 적인 검색 프로그램르로는 Altavista, yahoo, Lycos 등이 있고 국내에도 심마 니, 까치네 등이 있다.

* Gopher 가 기본적으로 텍스트를 기본으로 한 서비스인 것에 비해 페이지 중 에화상을 직접 표시 가능하고 마우스로 클릭하는 형태의 인터페이스를 제공하 므로 세계적으로 넓게 확산되어 있다.

* 【그림 22.31】은【그림 22.30】의 까치네 검색기에서 청와대와 관련된 자료를 찾아 그 자료의 홈페이지(homepage)를 액세스한 결과이다.

* 【그림 22.31】과 같은 홈페이지는 html로 작성되고 이렇게 작성된 html 파일 의 위치를 웹브라우저에서 URL로 지정하게 되면 인터넷을 통해 해당되는 파 일을 액세스하게 되고 웹브라우저는 html 화일을 해석하여 사용자에게【그림 22.31】과 같이 보여주게 된다.

* 【그림 22.31】과 같이 사용자에게 보기 좋은 화면을 제공하기 위하여 ekdidg 한 기능이 html에 규정되어 있다.

22.10.3 JAVA

(1)바이트 코드(Byte Code)

* JAVA는 객체지향형 프로그래밍 언어로서 애미메이션, 네트워크,게임 등의 모 든 분야에서 동적 움직임 등의 시각 효과를 높일 수 있는 특성을 갖는다. 예를 들어, 글씨가 상하로 움직이면서 이동한다던가 혹은 위로 스크롤 한다던가 하 는 시각적 효과를 얻을 수 있다. 【그림22.32】

* JAVA 는 바이트 코드(byte code)라 불리는 가상 머신(virtual amchine)개념을 도입하여 특정 프로그램 환경에 종속되지 않고 어떠한 머신에서도 실행될 수 있다는 중요한 특성을 갖는다.

* 대부분의 프로그래밍 언어는 컴파일 과정을 거치면 목적 코드(object code)가 생성되고 이 코드는 컴파일이 이루어진 머신에 종속성을 갖는다.

* 그러나, JAVA 개발 환경에서는 컴파일 후에 생성된 목적 코드가 모든 환경에 적용될 수 있도록 코드가 생성되며 이러한 코드를 바이트 코드라 한다.

* 즉, JAVA 를 이용하면 어떠한 기종과 어떠한 운영체제하에서 개발된 것에 상 관없이 실행된다는 고도의 이동성과 이식성을 갖는다.

* JAVA소스 파일은 확장자가 java 이고 JAVA 컴파일러( JAVAC)에 의해 컴파 일되어 생성된 바이트 코드의 확장자는 class 이다.

(2)애플릿(Apple)

* 애플릿은 HTML 내에서 작성된 JAVA 프로그램 또는 JAVA를 처리할 수 있 는 웹 브라우저내에서 수행되도록 작성된 JAVA 프로그램이다.

* 웹 브라우저가 수행한 HTML 내에 위와 같이 애플릿 구문이 삽입되어 있으 면 애플릿은 웹 서버에서 컴파일되어 바이트 코드로 되어 있는 상태이고 웹 브 라우저가 해당 HTML 을 수행하면 바이트 코드는 웹 서버로 부터 브라우저는 다운 로딩되고 브라우저는 그 바이트 코드를 해석하여 실행한다. 즉, 브라우저 는 특정 프로그램에 대한 코드를 갖지 않고도 즉시 원하는 프로그램을 수행할 수 있다는 매우 진보적인 결과를 갖는다.

22.10.4 VRML

* HTML 이 2 차원적이고 매우 정적이며 수동적 인데 반해 VRML(Virtual Reality Modeling Lanruage)은 3차원 가상 공간을 표시하기 위한 언어 사양 이다.

* VRML 에서 제공하는 파일 형태는 SGI 에서 개발한 Oprn Inventor의 파일 형 식인 iv 파일의 서브셋 사양으로 확장자가 wrl이 된다.

* 3 차원 공간에서 동적 움직임을 보이기 위해 x 축(위 쪽), y 축(오른쪽), -z 축 (앞 쪽)의 좌표계를 사용하고 Translation{translation x y z}, Rotation {rotation axisX axisY axisZ angleRadians}, Scale{scaleFactor x y z}과 같은 라이브러리가 사용된다.

* VRML내에 네트워크 상의 다른 호스크에 있는 VRML 을 포함하는 등의 네트 워크 연결 기능을 위해 두 가지 명령, WWWAnchor와 WWWInline을 제공한 다.

* 대표적인 VRML 브라우저 로는 SGI와 TGS가 공동으로 개발한 Webspace를 들수 있다.

*【그림 22.33】은 VRML로 기술한 3차원 화면을 나타낸다.