소켓(Socket)이란 무엇인가?
소켓이란 네트워크와 컴퓨터가 통신할 수 있는 하나의 창구이다. 즉, 소켓을 하나 만든다는 것은 정보가 드나드는 구멍을 하나 뚫는 것이라고 볼 수 있다.
이렇게 뚫린 소켓에 데이터를 쓰거나 소켓을 통해 데이터를 읽으면 그것이 소켓 프로그래밍이고 통신이다.
참고로 소켓은 시스템(운영체제) 상에서 파일과 거의 똑같이 취급된다고 한다. 생각해 보면 파일과 다른 점이 딱히 없다. 읽고 쓰기, 그것이 소켓의 본질이다. 하는 동작이 파일 입출력과 별 다른 점이 없다는 뜻이다.
TCP 와 UDP
사실 소켓 통신에는 크게 두 가지 형태가 있다. 그것은 TCP와 UDP이다.
TCP는 Transmission Control Protocol의 약자로 두 소켓이 서로 연결되어 서로 긴밀한 상호작용을 통해 마치 전화처럼 데이터를 주고받는 형태를 말한다.
UDP는 User Datagram Protocol의 약자로 두 소켓이 서로에게 데이터를 던져대고 받는, 마치 이메일과 같은 형태를 말한다.
이러한 형태의 차이때문에 TCP, UDP는 상반되는 특징을 가졌으며 장,단점이 나뉜다.
소켓 통신 절차
UDP
UDP 통신에서는 비교적 절차가 간단하다.
- 보낼 컴퓨터에서
- 소켓 만들기.
- 받을 컴퓨터의 주소 작성하기.
- 보내기.
- 받을 컴퓨터에서
- 소켓 만들기.
- 소켓에 받을 주소를 연결하기(바인딩하기)
- 받기.
여기서 주소란 컴퓨터의 ip주소 + 포트번호를 말한다.
그리고 주소와 소켓을 바인딩한다는 것은 어떤 주소(ip주소 + 포트번호)로 데이터가 오면 어떤 소켓으로 받겠다고 선언하는 것이다.
TCP
TCP에서의 절차는 비교적 복잡하다.
TCP에서는 하나의 소켓이 다른 하나의 소켓에 연결되어 1:1대응으로 작동하기 때문에, 서버에서는 연결된 소켓이 많으면 여러 개의 소켓이 필요하다.
또한 연결된 소켓들 외에도 연결 요청을 받아들일 소켓이 따로 필요하다.
따라서 TCP 서버 소켓은 UDP에 비해 Listen()과 Accept() 과정이, 그리고 클라이언트 소켓은 Connect() 과정이 추가됐다.
- Listen() : 하나의 소켓(Listener 소켓)이 계속 연결 요청을 수신하도록 하는 과정이다.
- Connect() : 서버의 소켓에게 연결 요청을 송신하는 과정이다.
- Accept() : Listen()과정에서 수신된 연결 요청을 받아들이고 다른 하나의 소켓(Server 소켓)에 연결해준다.
참고자료:
https://helloworld-88.tistory.com/215
[기본] 소켓(SOCKET)통신 이란?
소켓통신 소켓(SOCKET)이란?소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데
helloworld-88.tistory.com
https://swalloow.tistory.com/77
TCP와 UDP 비교 정리
전송계층 프로토콜 TCP와 UDP 프로토콜은 모두 전송계층에서 동작하는 프로토콜입니다.TCP는 Transmission Control Protocol의 약자이고, UDP는 User Datagram Protocol의 약자입니다.두 프로토콜은 모두 패킷을
swalloow.tistory.com
'CS > 네트워크, 서버' 카테고리의 다른 글
Overlapped 모델(Event 기반) (0) | 2022.11.11 |
---|---|
NonBlocking Socket (0) | 2022.11.07 |
JobTimer (0) | 2022.07.19 |
JobQueue (0) | 2022.07.16 |
Google Protocol Buffer (0) | 2022.07.07 |