운영체제에서 소프트웨어적으로 제공하는 컴퓨터 간 네트워크 연결을 제공한다.
네트워크 프로그래밍에서 연결요청을 허용하는 소켓의 생성 과정을 말한다.
서버 소켓 생성 과정
- 1단계: 소켓 생성 |
socket 함수호출
- 2단계: IP주소와 PORT번호 할당|
bind 함수호출
- 3단계: 연결요청 가능 상태로 변경 |
listen 함수호출
- 4단계: 연결요청에 대한 수락 |
accept 함수호출
클라이언트 소켓 생성 및 연결 요청 과정
- 1단계: 소켓 생성 |
socket 함수호출
- 2단계: 연결 요청 |
connect 함수호출
윈도우 소켓은 리눅스 소켓과 많은 부분이 유사한데 BSD 계열 유닉스 소켓을 참고하여 설계되었기 때문이다.
리눅스
파일 == 소켓. 리눅스는 내부적으로
소켓도 파일
로 취급한다. 파일을 생성하건 소켓을 생성하건 파일 디스크립터가 반환된다.
파일 디스크립터란, 시스템으로부터 할당받은 파일 또는 소켓에 부여된 정수를 의미한다. 예를 들어, 노래방에 가서 나의 애창곡을 곡의 제목 대신 18번이라고 칭하는 것과 마찬가지다.
윈도우
시스템 함수의 호출을 통해서 파일을 생성할 때
핸들(handle)
이라는 것을 반환한다. 리눅스와 달리파일 핸들과 소켓 핸들
을 구분한다.
⇒ 파일 핸들 기반의 함수와 소켓 핸들 기반의 함수에 차이가 있다.