-
[네트워크] Socket 이란?네트워크 2024. 9. 1. 03:03
- 네트워크에서 데이터를 주고받기 위한 통신의 끝점을 의미한다
- 즉, 소켓은 컴퓨터 프로그램이나 애플리케이션이 네트워크상에서 다른 프로그램과 통신하기 위해 사용하는 인터페이스 이다
- OSI 7계층 중에서 응용 계층 즉, 7계층 에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐서 전송 계층으로 데이터를 전달해야 한다
- 다시 말해 소켓은 전송 계층과 응용 프로그램 사이의 인터페이스
- 역할을 하고 두 호스트를 연결한다
소켓의 3요소
- IP 주소
- 서버등을 식별하기 위한 고유한 주소
- 포트 번호(Port)
- 동일한 IP 주소 에서 여러 애플리케이션이 네트워크 통신을 할 수 있도록 특정 애플리케이션을 식별하는 숫자
- 프로토콜(Protocol)
- 통신 방식이나 규칙을 정의하는 네트워크 프로토콜
이렇게 세가지 요소는 함께 사용되어 소켓을 통해 네트워크 상에서 특정 서비스를 식별하고 통신을 수행 할 수 있게 해준다
소켓 통신의 흐름
- Socket 생성
- 서버에서 소켓 생성
- 소켓을 생성하고 IP 주소 와 프로토콜을 설정
- socket() 함수
- Binding 바인딩
- 생성된 소켓을 IP 주소와 포트 번호에 바인딩 한다
- 소켓을 특정 주소 (IP, Port) 에 묶는다
- bind() 함수
- Listening 리스닝
- 서버는 연결 요청을 대기하기 위해 소켓을 listening 상태로 설정
- listen() 함수
- 클라이언트 Socket 생성
- 클라이언트는 서버와 통신하기 위해 자신의 소켓을 생성
- socket() 함수
- 클라이언트 Socket 연결
- 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 서버에 연결 요청을 보냄
- 서버의 소켓에 연결을 시도한다
- connect() 함수
- 서버 소켓 연결 수락
- 서버는 클라이언트의 연결 요청을 수락
- accept() 함수
- 데이터 송수신
- 클라이언트와 서버는 서로 데이터를 주고 받는다
- 클라이언트와 서버 모두에서 이루어 진다
- 송신할 때 send() 함수, 수신할 때 recv() 함수
- Socket 종료
- 통신이 끝나면 각각 소켓을 닫는다
- 연결된 소켓을 종료
- close() 함수
'네트워크' 카테고리의 다른 글
[네트워크] 로드 밸런싱 (6) 2024.10.13 [네트워크] TCP/IP 4계층 (0) 2024.07.11 [네트워크] OSI 7계층 7 Layer (0) 2024.07.09 [네트워크] 쿠키(Cookie), 세션(Session), 토큰(Token) (1) 2024.06.09 [네트워크] 3-way handshake 와 4-way handshake (0) 2024.05.10