POSIX Socket

최승혁·2022년 6월 23일
0
post-thumbnail

POSIX

Portable Operating System Interface

정의

POSIX는 이식 가능 운영 체제 인터페이스(portable operating system interface)의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격이다.

POSIX의 마지막 글자 X는 유닉스 호환 운영체제에 보통 X가 붙는 것에서 유래한다.

From wikipedia

규격의 내용은 커널로의 C 언어 인터페이스인 시스템 콜 뿐 아니라, 프로세스 환경, 파일과 디렉터리, 시스템 데이터베이스(암호 파일 등), tar 압축 포맷 등 다양한 분야를 아우른다.

등장 배경

1960년대 후반 개발된 UNIX는 다양한 형태로 발전하여, BSD나 System V 등 여러 운영체제로 발전했다. 이러한 다양한 형태의 UNIX 계열 운영체제의 등장은 운영체제 간 호환성과 이식성에 어려움을 주기 시작했다.

이에 UNIX 계열 운영체제 간의 이식성을 높이기 위해 1980년대 후반 POSIX 표준이 탄생하게되었다.

POSIX는 운영체제 자체가 아니라 응용 프로그램과 운영체제 간의 '인터페이스'를 정의하는 개념이기 때문에 프로그래머는 인터페이스가 존중되는 한 운영체제와 응용 프로그램을 자유롭게 작성할 수 있다. 또한 하드웨어, 운영체제, 공급 업체에 독립적이기 때문에 응용 프로그램의 이식성을 더 쉽게 얻을 수 있다.

1991년, 이러한 POSIX 표준을 만족하는 Linux가 탄생했고 아직까지도 오픈소스 소프트웨어로 스마트폰, 임베디드 기기 등 다양한 분야에서 널리 사용되고 있다.

Socket

정의

소켓이란 네트워크 상에서 동작하는 프로그램 같 통신의 종착점(Endpoint)이다. 즉, 프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해주는 연결부이다.

Endpoint: IP Address와 port 번호의 조합을 뜻하며, 최종 목적지를 나타낸다.

소켓은 주로 OSI 7계층 중, 전송 계층에 속하는 TCP의 연결 방법으로 사용한다. 연결 지향적이라는 특징을 가지고 있으며, 이를 기반으로 구현된 통신 방법에는 HTTP 통신이 있다.

예시 코드

https://github.com/choiish98/Computer-Science/tree/main/Network/5.%20Upper%20Layers/5-2.%20Socket%20Programming

참고 자료

profile
그냥 기록하는 블로그

0개의 댓글