2011년6월27일_네트워크, 패킷, 프로토콜, IP주소, 포트번호, 루프백주소, 소켓이란?

 

● C언어는 오랫동안 네트워크 통신 소프트웨어개발을 위한 언어로 선택 되어왔다.
   실제로 소켓(socket)이라고 알려진 API는 C언어로 개발되었다.  → 그래서 C언어를 배웠구나.

● 인터넷 (Inter Network)

image
[그림] 인터넷

인터넷의 유래는 1960~1970년대 미국 국방부 산하의 고등 연구국(Advanced Research Projects Agency, ARPA)의 연구용 네트워크가 시초이며, 군사용 네트워크는 밀네트(MILNET)로 발전되었다. 동서냉전이 한창이던 때 미국 국방부 고등계획국에서는 핵전쟁 등의 상황에서도 살아남을 수 있는 네트워크를 연구하였다. 연구결과 기존의 회선교환(circuit switching)방식보다는 패킷교환(packet switching)방식이 매우 견고하고 생존성이 높았다. 최초의 2 노드간의 상호연결은 1969년 10월 29일 UCLA와 SRI연구소간에 연결되었다. 이 통신망을 ARPANET이라고 하였으며 현재의 인터넷망의 시초이다.

[출처] 위키백과 http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7


● 호스트 : 웹브라우저나 메신저 프로그램 또는 파일 공유 프로그램을 구동하는 컴퓨터
● 라우터 : 하나의 통신 채널로 온 정보들을 다른 채널로 교체/전달하는 장비.
● 프로토콜 : 패킷을 어떻게 보낼 것인지…통신규약으로 프로토콜이 다를 경우 통신이 불가능하다.
                TCP/IP(Transmission Control Protocol/Internet Protocol)과 UDP(User Datagram Protocol)등이 있다.


● 프로토콜의 계층구조

image 

● IP는 각 패킷을 전송하지만 네트워크를 경유하며 손실이 발생할 수 있고, 순서가 바뀔 수도 있으며, 복제된 패킷이 생길 수 있다.
● TCP와 UDP는 호스트 내의 응용 프로그램을 구분하기 위해 포트번호라는 주소를 사용함.
   (이 부분은 이해가 잘 가지 않아 도식과 설명은 생략)

● 주소 ┬ IP주소 : 인터넷상 PC구분를 구분할 수 있는 주소이고 IPv4의 경우 32bit, IPv6는 128bit로 IPv4의 주소부족으로 v6가 탄생.
          └ port번호 : 프로그램을 구분할 수 있는 부호없는 16bit 정수.

● 루프백주소(loopback address) : 루프백인터페이스라는 가상디바이스에 할당되어 있으며,
                                          전송한 패킷을 즉시 돌려 보내는 기능을 가지고 있다. 프로그램 테스트시에 유용하니 알아 둘 것.

● 소켓(socket) : 응용프로그램이 이를 통해 데이터를 송수신하는 추상화된 개념.
                     linux OS에서 제공하는 이 함수를 사용하여 프로그래밍할 것이다.
                   ① 스트림소켓: TCP소켓으로 신뢰성있으나 복잡.  (데이터를 보내고 확인하고 못 받으면 다시 보냄) 
                   ② 데이터그램 소켓: UDP소켓으로 고속이나 신뢰성이 떨어짐. (데이터를 보내고 확인하지 않아 손실가능성이 높다.)