2024. 9. 7. 20:32ㆍiOS/네트워크
socket이란?
컴퓨터 조립해본 경험이 있다면 CPU 접촉 단자를 소켓이라고 부르는 것을 들어보았을 것이다. 연결부를 뜻한다.
alt; cpu socket image
Network Socket
Client와 Server 사이 Connection을 가지고 네트워크 상에서 데이터를 송수신 할 수 있도록 만든 연결부이다. 이중 OSI 7계층에서 4계층에 해당하는 TCP(Transport Control protocol)을 따르는 소켓을 TCP 또는 TCP/IP 소켓, UDP를 따르는 소켓을 UDP 소켓이라고 한다.
Socket Flow
Clinet와 Server의 Flow 차트는 다음과 같다.
Client
클라이언트가 소켓을 create하고, connect연결 요청을 한다. 연결이 수립(establish)되면, 그 때부터, send / receive API를 통해 데이터 송수신 한다.
Server
소켓을 생성하고, bind() → listen() → accept() 거쳐 client와 연결한다. 이 후는 send / receive 를 통해 클라이언트와 데이터 송수신한다.
bind에서는 port를 파라미터로 받는데, OS에 해당 port 번호 사용을 알린다. 만약 중복된 port일 경우 error 발생.
listen에서는 클라이언트에서 연결 요청이 있는지 체크 후, 내부 큐로 연결 요청을 쌓는다.
accept에서 큐에서 대기 중인 연결 요청을 꺼내, 새로운 소켓을 만들고 연결을 수립 한다. 서버 소켓은 다시 새로운 요청에 대해 listen() 한다.
Reference
'iOS > 네트워크' 카테고리의 다른 글
WebRTC 앱 만들어보기: (1) Domain 지식 (1) | 2024.09.08 |
---|---|
WebSocket: (2) 등장 배경 (0) | 2024.09.07 |
iOS에서 Android Fetcher 흉내내기 - API 호출 줄이기 (0) | 2023.01.02 |
Follow / Like / Comment Change Notification to List (0) | 2023.01.02 |
API의 응답 코드는 어떻게 관리하는 것이 좋을까? (0) | 2022.02.22 |