경진의 블로그

네트워크 기초 - 인터넷 프로토콜 본문

개인참고자료/자바(네트워크)

네트워크 기초 - 인터넷 프로토콜

aith 2008. 7. 7. 01:11
인터넷 프로토콜

인터넷은 OSI 3계층인 네트워크 프로토콜에 기반을 둔 하나 이상의 네트워크 모임으로서, 각각의 네트워크는 인터넷 내의 다른 어떤 네트워크와도 교신할 수 있다. 또한 인터넷은 전세계적인 TCP/IP 네트워크며, IP 주소체계와 IP 프로토콜을 사용한다.

IP(Internet Protocol)
IP는 네트워크 계층에 존재하는 프로토콜로서 TCP와 함께 현재의 인터넷 구조에서 활용도가 가장 많으므로 가장 널리 사용되고 있다. 그러나 신뢰성 없는 프로토콜이다. 즉, 패킷이 상대방에게 안전하게 전송된는 것을 보장하지 않는다. 이것은 IP가 상위 계층인 트린스포트 계층에서 패킷을 안전하게 전달하는 신뢰성을 책임진다는 가정을 바탕으로 IP 자신은 데이터를 효율적으로 전송하는 것엔만 집중한다.

IP는 호스트에 대한 주소 체계와 데이터 패킷에 대한 라우팅을 담당하는데, 패킷을 수신하는 각 라우터는 패킷의 IP 주소를 근간으로 라우팅을 결정한다. IP주소는 32비트 정보로 구성되는데, Dot(.)을 구분자로 해서 8비트씩 네 부분으로 나뉘어진다. 이중 일부는 네트워크를 나타내고 다른부분은 호스트를 나타낸다. IP 주소는 클래스 네개로 구분된다.

A클래스 : 128개 (1.0.0.0 ~ 127.255.255.255)
B클래스 : 64개 (128.0.0.0 ~ 191.255.255.255)
C클래스 : 32개 (192.0.0.0 ~ 223.255.255.255)
D클래스 : 16개 (223.0.0.0 ~ 238.255.255.255)

A클래스
1바이트 네트워크 비트, 나머지 3바이트 지역비트(호스트)로 설정 된다.
127.x.x.x 는 루프백 시험에 사용된다

B클래스
2바이트 네트워크 비트, 2바이트 지역비트(호스트)로 설정 된다.
호스트가 많아 서브넷 관리가 필요하다.

C클래스

3바이트 네트워크 비트, 1바이트 지역 비트(호스트)로 설정 된다.

D클래스 4바이트 멀티 캐스트로 설정된다.

현재의 IP 주소 구조는 낭비가 심하기 때문에 하나의 네트워크를 좀더 작은 네트워크로 나누기 위해 하위넷을 사용한다. 이 하위넷은 로컬 네트워크에서만 적용된다.
예) 가정에서 인터넷 공유기를 사용해서 하나의 회선으로 컴퓨터 여러 대가 인터넷을 이용할 수 있는 것도 바로 공유기가 자동으로 하위넷을 구성해주기 때문에 가능하다.

ICMP(Internet Control Message Protocol)
IP는 내장된 오류 처리, 또는 보고 메커니즘이 없으며 IP에 이런 기능을 추가한 프로토콜이 ICMP다. ICMP에서 전송하는 역할은 IP가 담당한다. 그렇지만 추가적으로 오류 보고와 기타 제어 메시지를 포함시키기 위해서 IP에 덧붙여서 ICMP를 사용한다.

TCP(Transmission Control Protocol)
TCP는 신뢰성 있는 프로토콜이다. 즉, 전송할 데이터가 안전하게 전달되는 것을 보장하는 프로토콜이라는 뜻이다. 이때 전달되는 데이터는 발신자가 보내는 것과 같은 순서로 수신자에게 전달된다. 따라서 흔히 TCP를 전화 통화와 비교한다.

순서 전화 통화 TCP통신
 1  먼저 상대방의 전화번호를 입력한다  네트워크 내에 통신할 상대와 연결을 시도한다.
 2-1  만약, 상대방이 전화를 받는다면 대화를 한다.
 이때 대화 내용은 내가 말한 순서대로 상대방에게 전달되어 들리게 된다
 연결이 되어 양방향 데이터 교환이 이뤄진다.
 이때 데이터는 보낸 순서와 동일하게 상대편에 전달된다.
 2-2  만약, 상대방이 전화를 받지 않는다면 통화 연결이 되지 않는다.  연결이 되지 않는다.
 3  전화를 끊는다  네트워크 연결을 종료한다.

전화번호를 입력해서 상대방이 전화를 받아야만 통화가 이뤄진다. 이와 같이 TCP도 연결지향 프로토콜이라서, 데이터를 전송하거나 수신하기 전에 조금 뒤에 알아볼 소켓을 통해 양쪽 연결이 성립되어야만 한다. 일단 이렇게 연결이 성립되면 TCP는 데이터의 손실이나 중복없이 데이터를 목적지에 확실하게 전달한다. 이때 발신자는 데이터의 무결성을 보장하기 위해 체크섬을 포함해서 전달한다. 수신자는 발신자가 포함한 체크섬을 사용해서 전달받은 데이터를 확인한다. 만약, 이때 보낸 데이터의 일부가 유실 되었거나 중간에 전달되지 않고 빠진 데이터가 있다면 수신자는 발신자에게 해당 데이터의 재전송을 요청한다.

또 다른 특징으로 TCP는 소켓과 포트를 이용해서 동시에 여러 개의 접속을 지원할 수 있다는 점이다. 하나의 채팅 서버가 동시에 수천 명의 동시 사용자들의 연결을 유지하는 것도 TCP가 지원하는 다중 송수신 특징 때문에 가능하다.

소켓과 포트를 이용해서 연결되면 우리가 IO에서 스트림을 사용하는 것과 거의 동일하게 사용할 수 있는 가상 스트림이 만들어진다. 따라서 소켓 프로그램은 IO스트림과 소켓에 이미 연결된 가상 스트림을 연결해서 사용하는 것이다.

TCP는 UDP에 비해 프로토콜이 더 복잡하고 속도도 느리다. 하지만 신뢰성 있는 전송이 가능하다는 장점때문에 HTTP, FTP, TELNET등 대부분의 경우 TCP를 이용한다.

UDP(User Datagram Protocol)
UDP는 TCP와 달리 신뢰성 없는 프로토콜이다. 즉, 전송한 데이터가 잘 전달되었는지 확인하지 않고 단지 데이터를 보내는 것으로 자신의 임무를 다한 것으로 생각하는 것이다. UDP는 흔히 편지배달에 비유한다.

우리가 편지를 보내면 그 편지가 수취인에게 반드시 도착한다고 보장할 수 없다. 편지를 배달하던 중에 편지가 분실될 수도 있고 또는 주소를 잘못 적거나 집배원의 실수로 잘못된 곳으로 배달될 수도 있는 것이다. 또한 편지를 보낸 사람 입장에서 우편물이 잘 도착했는지 확인할 방법도 없다.

그리고 TCP와 달리 UDP는 비연결지향 프로토콜이다. 즉, 위의 우편 배달 예에서와 같이 상대방에게 편지를 보낸다고 알리지 않아도(연결되지 않아도) 상대방이 어디(어느 주소)에 있는지를 가정하고 보낸다.

UDP는 음악이나 동영상의 스트리밍 서비스 같은 것에 적당한 프로토콜이다.
Tag
, , ,
0 Comments
댓글쓰기 폼