리눅스 네트워크 개요와 BSD 소켓

2019. 7. 14. 22:14드론

https://www.dummies.com/programming/networking/network-basics-tcpip-protocol-suite/

 

TCP/IP 각 계층은 응용, 전송, 네트워크, 링크 계층으로 나뉜다

응용계층은 사용자가 실제로 사용하는 응용 프로그램을 실행하기 위해 필요한 기능을 정의하고, 전송 계층은 응용 프로그램 간 통신을 위한 기능을 정의한다. 인터넷 계층은 IP 주소와 데이터 전송 경로 제어를 위해 필요한 기능을 정의, 마지막으로 링크 계층은 네트워크 하드웨어 간의 전송 제어 및 서비스 제공을 위해 필요한 기능을 정의하고 있다

 

https://www.thegeekstuff.com/2012/03/ip-protocol-header/

 

응용계층부터 하드웨어 링크로 내려가면서 헤더가 하나씩 붙으면서, 경로로 도달하는 구간에서 헤더를 검사해서 전송과 관련된 처리를 하게 된다 

 

 

실제로 도메인 주소창에 http://172.217.24.142 을 입력하면 구글 웹페이지에 접속하게 된다

 

참고로 현재 위치에서 특정 서버까지의 경로를 알고 싶은 경우에는 traceroute라는 프로그램을 이용할 수 있다. traceroute 명령어를 이용하면 중간에 있는 라우터의 ip 주소와 가는 데 걸리는 시간 등의 정보가 표시된다. 아래 그림을 보면 일부분은 보안으로 감춰져있는 것으로 확인된다

 

 

BSD 소켓에 대해서 얘기하면, BSD 소켓은 프로세스 간의 상호 양방향 통신 방식으로 소프트웨어로 작성된 통신 접속점을 나타내고, 네트워크 상에서 단말들끼리의 연결을 위해 사용한다. 유닉스에서의 소켓은 일반적인 디바이스 파일과 마찬가지로 파일로 다룰 수 있는 파일 디스크립터를 제공한다

 

socketpair라는 IPC 소켓함수를 이용해서 프로세스 통신을 하는 예제