소켓 통신이란?
프로토콜, IP 주소, 포트 넘버로 정의되며 떨어져 있는 두 호스트를 연결해주는 도구로, 소켓을 통해 데이터를 주고 받을 수 있다.
서버와 클라이언트 통신 과정
1. 서버가 소켓을 생성한다.
2. 소켓을 bind한다.
( bind는 소켓에 ip주소와 port를 할당하는 과정 )
3. bind된 소켓을 listen 상태로 둔다
( listen 상태에서는 클라이언트가 connect 요청을 보낼 때 까지 대기한다. )
4. 클라이언트가 소켓을 생성한다
( 이 과정은 위에 먼저 일어날 수도 있다 )
5. 클라이언트가 connect를 호출하여 연결하고자 하는 서버에 요청을 보낸다.
6. listen하고 있던 서버 소켓이 해당 요청을 accept하고 나면 두 소켓이 연결된다.
( listen하고 있던 소켓과 accept된 소켓을 다른 소켓이다 )
7. 연결된 소켓을 통해 통신을 진행한다.
8. 통신이 끝나고 나면 연결을 종료하고 소켓을 삭제한다.
tcp와 udp의 차이
tcp 연결에서는 위의 과정처럼 연결을 통해 통신을 진행하지만, udp같은 경우는 connect를 하지않고 sendto함수를 통해서 바로 서버로 데이터를 보낸다. 그리고 서버도 listen상태를 하지 않고 recvfrom함수를 통해서 데이터를 받고 작업을 수행한다. 즉 연결이 보장되지 않기 때문에 데이터의 전송에 대한 확실성이 떨어질 수 있지만, 확인 과정이 없기 때문에 빠른 송수신에 유리한 강점을 가지고 있다.
'공부' 카테고리의 다른 글
IOCP에 대해서 (0) | 2023.01.29 |
---|---|
동기화와 락( Lock )의 종류에 대해 (0) | 2023.01.29 |
멀티 스레드에 대해서 (0) | 2023.01.29 |
심볼 파일이란? (0) | 2023.01.16 |
빌드란? (0) | 2023.01.16 |