<개인공부>/[TCP_IP 소켓]

[이론] 소켓(Socket)이란?

BlockDMask 2017. 10. 15. 09:00
반응형

안녕하세요. BlockDMask 입니다.

TCP/IP 소켓 프로그래밍에 대해 알아보겠습니다. 


> 소켓(Socket)이란?


- 소켓을 이용하면 인터넷의 복잡한 하부구조에 대한 세부적인 지식 없이도 손쉽게 네트워크 프로그램을 개발할 수 있다. 

- TCP/IP 4계층 (네트워크 접속, 인터넷, 전송, 응용 계층)에서 응용계층 바로 아래에 소켓 계층을 만들어서 응용 계층 하위단계의 자세한 내용을 모른다 하더라도 소켓을 이용하면 응용계층만 신경쓰고 네트워크 프로그램을 개발 할 수 있다. 

- "하위계층 몰라도되니까 응용계층만 생각하고 소켓 가지고 네트워크 개발해라" (뭐 이런 요지에서 UC 버클리 대학에서 만들었다는..?)

- BSD 소켓 (Berkeley Software Distribute Socket) : UC 버클리 대학에서 1989년에 만들어졌고, C 언어 기반의 API를 제공해줍니다. 


- 제가 이해한 바를 그림으로 그려보면,



- TCP/IP 4계층을 기준으로 나누었을 때,

응용 계층 (Application Layer) 

전송 계층 (Transport Layer)

인터넷 계층 (Internet Layer)

네트워크 접속 계층 (Network Access Layer)


- 이런식으로 소켓 계층? API를 사용하기 전에는 네트워크 프로그래밍을 할때, 1->2->3->4->5->6->7 단계 까지 컴퓨터1에서 컴퓨터2까지 통신을 시킬때, 컴퓨터 1의 응용계층에서 헤더를 붙여서 전송계층의 패킷에 또 헤더를 붙여서 인터넷 계층으로 보내고 거기서 다시 헤더 붙여서 네트워크 접속 계층으로 보내서 그걸 컴퓨터 2의 네트워크 접속 계층이 받아서 헤더 푸는 과정 거치고 거치고 거쳐서 컴퓨터 2의 응용계층으로 가면 컴퓨터2에서 드디어 정보를 받아 볼 수 있는 구조에서. (블라블라블라 길고 긴 과정을 신경 써야하는 구조에서)


- 소켓(socket)을 사용하게 되면 네트워크 프로그래밍을 할때 1->2->3 단계로 응용 계층과 소켓 계층(소켓 API)만 신경쓰면 컴퓨터1과 컴퓨터2의 인터넷을 보다 간단히 할 수 있습니다. (자동으로 아랫단의 계층의 기능을 해준다. 라고 생각하면 될까요?)


<자료 출처>

https://en.wikipedia.org/wiki/Berkeley_sockets

https://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%EC%86%8C%EC%BC%93

반응형