소켓  프로그램


프로토콜별 계층 구조

국제표준화기구인 ISO에서는 서로 다른 긱종의 컴퓨터 간에 이루어지는 통신을 위해 OSI 7계층을 규정하고 있다. TCP/I 프로토콜에서는 TCP/IP 4계층 구조를 규정하고 있다. 이와 같이 계층별로 역할을 나누어서 규정하는 이융는 상호 접속에 필요한 통신 규약을 정의하고, 유사 기능을 갖는 모듈을 동일 계층으로 묶기 위해서이다.


OSI 7계층 구조나 TCP/IP 4계층 구조를 설명하기에 앞서 프로토콜 계층 구조를 이해하기 쉽도록 일상의 예를 가지고 설명하고자 한다. 다른 지역의 친구에게 편지를 보내는 경우이다.


1. 사용자 계층

- 사용자 S는 친구에게 보낼 편지를 작성하고 봉투에 넣는다. 겉면에 보내는  사람과 받는 사람의 주소를 적은 후 우편함에 넣는다.

- 이 과정에서 사용자 S는 편지가 어딜 경유해서 목적지에 도착하고, 친구에게 어떻게 전달되는지 알지 못해도된다. 우체국이 역할을 대행해주기 때문


2. 우체국 계층

- 우체국에서는 편지함의 편지를 수거해서 목적지별로 분류하고, 해당 편지를 최종 목적지로 전달하기 위해 다음 경유지를 결정하낟. 예를 들어 사용자 S에게 사용자 D로 편지를 보내는 경우를 살펴보면 사용자 S에서 보낸 우편물은 S눙체국에서 우편물을 분류한다. 그런 다음 목적지에 따라 다음 경유지를 결정하는데 최종 목적지가 D 인 경우 우편물의 다음 경유지는 C1 우체국으로 결정된다.

- 최종 목적지가 D인 우편 봉투에 발신지 S와 다음 경유지 C1을 적은 딱지를 추가로 붙여서 우편 수송차로 보낸다.


3. 우편 수송자 계층

- 우편 수송차에서는 우편 봉투에 무착된 딱지의 착신지, 즉 다음 경유지를 보고 이동을 해서 다음  경유지로 우편물을 전달한다.

- 이 과정에서 최초 발신지가 어딘지, 최종 목적지가 어디인지는 알필요가 없다. 

- 단지 우편 봉투에 추가로 붙은 딱지 정보만을 보고 우편물을 전달한다.


4. 우체국 계층

- 우편물을 받은 C1 우체국에서는 우편 봉투와 발신과 수신정보를 보고 또다심 다음 경유지를 결정한다.


5. 우편 수송차 계층

- 우편봉투에 추가로 붙이는 딱지에는 발신지로 C1과 착신지로 D를 적어 우편 수송차로 보낸다.


6. 우체국 계층

- 우체국 D는 우편 수송차 계층을 통해 우체국 C1에서 받은 우편물을 ㅇ루편봉투의 발신과 수신 정보를 비교한다. 우편물을 사용자에게 전달할 준비를 한다.


7 사용자 계층

- 사용자 D는 사용자 S가 보낸 편지를 최종 우체국인 D를 통해 전달받는다.      


이와 같은 루틴이 통신망에서도 OSI 7 Layer 와 TCP/IP 4 Layer 등의 프로토콜 구조를 제공한다.




OSI 7계층과 TCP/IP 4계층 비교

우편물을 보내는 예에서는 계층을 3개로 나누었다. 그런데 ISO에서는 7개의 수직적인 계층으로 나누고 다른 계층과는 무관하게 저마다 독립적인 기능을 지원하도록 하였다.  OSI 7계층은  최상위 계층인 응용 계층으로 부터 시작해서 표현 계층, 세션계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 구분된다. 가 곅층마다 고유한 서비스를 제공하고 이를 위한 프로토콜이 존재한다.


1. 응용 계층(Application Layer)

- 응용 프로세스를 네트워크에 연결할 수 있게 해서 자료를 송수신할 수 있는 창구를 제공한다. 사용자가 이메일을 전송하고나 웹 브라우저를 통해 웹 서 버에 연결하면 해당 서비스는 응용 계층에서 smtp, pop3, http 등의 프로토콜을 이용해 서비스한다.


2. 표현 계층(Presentation Layer)

-통신하는 컴퓨터간의 데이터 표현의 차이를 해결하기 위해 자료의 형식을 변환해 주거나 공통의 형식을 제공해주는 계층이다. 아스키 코드와 ebcdic 코드의 변환, 그래픽 정보나 영상 정보를 jpeg나 mpeg등으로 변환해서 전송하는 기능을 수행한다. 또한 네트워크 보안을 위해 자료를 암호화해서 전송하고 수시니측에서는 이를 해동하는 기능도 수행한다. 효율적으로 전송하기 위해 자 료를 압축하고 압축을 푸는 기능도 수행한다.


3. 세션 계층(Session Layer)

- 응용 계층 사이에 연결을 설정하고, 유지하고 종료하는 기능을 수행한다. 이를 위해 전송 계층으로 전송할 자료의 순서를 결정하고, 자료의 점검이나 복구를 위해 동기 위치등을 지정한다.


4. 전송 계층(Transport Layer)

- 통신하는 컴퓨터간에 자료를 전송하는 계층이다. 송신측에서는 전송할 데이터를 패킷으로 분할한다. 수신측에서는 분할된 패킷을 다시 조합해서 본래의 자 료로 만들고 상위 계층으로 전달한다. 자료가 수신측에 올바르게 전송될 수 있도록 보장하는 기증도 수행한다.


5.  네트워크 계층(Network Layer)

- 라우팅 프로토콜을 이요해서 최적의 전송 경로를 선택해서 이를 통해 자료를 전송하도록 한다. 이를 위해 IP주소와 같은 논리 주소 체계와, 지리적으로 떨어져 있는 네트워크상의 두 컴퓨터 사이에 최종 목적지까지 정확하게 연결되도록 하는 연결성을 제공한다.


6. 데이터링크 계층(Data Link Layer)

- 물리적인 전송 링크를 통해 자료를 안전하게 전송하는 계층이다. 전송 자료의 비트들을 프레임이라는 놀리 단위로 구성해서 최종 목적지까지 전송하기 위해 인접한 컴퓨터로 자료를 안전하게 전송한다.


7. 물리 계층 (Physical Layer)

- 컴퓨터로 서로 연결하는 물리적인 링크의 활성화/비활성화, 링크 상태를 유지하기 위해 물리적인 링크의 전기적, 기계적, 규약적, 기능적 명세를 정의한다.

- osiy 7계층에 비해 TCP/IP 4계층은 미국 국방성이 개발한 알파넷의 통신 프로토콜이다.

                                                                                                                                                                                                                                                                                                                                         

TCP/IP 4계층에서는 좀더 단순하게 응용계층, 전송 계층, 인터넷 계층 네트워크 액세스 계층으로 규정하고 있다.


1. 응용 계층

- 응용 계층은 OSI 7계층에서 세션, 표현, 응용 계층에 해당한다. 텔넷, FTP, SMTP 등과 같은 TCP와 UDP기반의 응용 프로그램을 구현할 때 사용한다.


2. 전송 계층

- 전송 계층은 SOI 7 계층에서 전송 계층에 해당하며 통신 노드 간의 연결을 제어하고 자료의 송수신을 담당한다. 프로토콜로는 스트림 형태의 연결형 서비스인 TCP와 데이터그램 형태의 비연결형 UDP가 있다.


3. 인터넷 계층

- 인터넷 계층은 OSI 7 계층에서 네트워크 계층에 해당한다. 통신 노드 간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당한다. 프로토콜로는 IP, ICMP, A RP, RARP가 있다. IP는 데이터그램 방식의 비연결형 서비스만을 제공한다.


4. 네트워크 액세스 계층

- 네트워크 액세스 계층은 OSI 7계층에서 물리 계층과 데이터링크 계층에 해당한다. LAN, X.25, 패킷망, 위성 통신, 다이얼업 모뎀 등에 사용된다. 특히 이더넷에서는 CSMA/CD MAC프로토콜을 사용하며 IEEE 802.3 MAC 표준으로 규정되어 있다.


이렇게 구분된 통신 프로토콜 계층 구조를 기반으로 하여 프로그램으로 각 계층별 자료를 제어하면서 통신할 수 있는 것이다. 소켓 프로그램은 전송 계층에서 제공하는 통신 함수를 호출해서 자료를 송수신한다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

+ Recent posts