일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Vision
- 딥러닝
- classification
- web
- 머신러닝
- ML
- Meta Learning
- dl
- 3d
- 알고리즘
- Python
- CV
- math
- clean code
- FineGrained
- algorithm
- computervision
- Depth estimation
- SSL
- cs
- 자료구조
- GAN
- Front
- nlp
- PRML
- pytorch
- nerf
- FGVC
- Torch
- REACT
- Today
- Total
KalelPark's LAB
[ Computer Network ] Socket Programming? 본문
Socket Programming
두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자입니다.
두 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달하는 것이 가능합니다. 결국 Socket이 구혐됨으로써, 네트워크 및 전송 계
층의 캡슐화가 가능해집니다.
1. 스트림 소켓 (SOCK_STREAM)
양방향으로 바이트 스트림을 전송할 수 있는 연결 지향형 소켓으로 양쪽 어플리케이션이 모두 데이터를 주고 받을 수 있습니다.
스트림 소켓은 오류수정, 전송처리, 흐름제어 등을 보장해주며, 송신된 순서에 따라 중복되지 않은 데이터를 수신하게 됩니다.
해당 소켓은 각 메세지를 보내기 위해 별도의 연결을 맺는 행위를 하므로, 약간의 오버헤드가 존재합니다. 그러므로 소량의 데이터보다
는 대량의 데이터를 보내는 경우가 적당합니다.
2. 데이터그램 소켓 (SOCK_DGAM)
명시적으로 연결을 맺지 않으므로, 연결형 소켓이라고 합니다. 메시지는 대상 소켓으로 전송되며 대상 소켓은 메시지를 적절히 수신합
니다. 스트림 소켓을 사용하는 것이 데이터그램 소켓을 사용하는 것보다 더 신뢰성이 높은 방법이지만, 연결을 수립하는데 드는 오버헤
드는 무시할 수 없습니다. 데이터를 전송할 때 UDP를 전송합니다.
Socket API
클라이언트 소켓(Client Socket)과 서버 소켓(Server Socket)이 어떻게 다뤄지는지, API 호출 흐름을 통해
어떻게 변하는지 알아볼 필요가 있습니다. 각 소켓(Socket)이 어떻게 처리되는지 흐름을 간단하게 표현하면 다음 문장과 같습니다.
클라이언트 소켓(Client Socket)은 처음 Socket을 생성(Create)한 다음, 서버 측에 연결(Connect)을 요청합니다.
그리고, 서버 소켓에서 연결이 받아들여지면, 데이터를 송수신(send/recv)합니다. 모든 처리가 완료되면 소켓을 닫습니다(close).
서버 소켓(Server Socket)은 첫 단계에서는 생성(create)하고, 서버와 포트번호를 결합(bind), 주시(listen)kg
Reference
'Study > Computer Network' 카테고리의 다른 글
[ Computer Network ] Application layer, Socket? (0) | 2023.03.17 |
---|---|
[ Computer Network ] TCP/IP? (0) | 2023.03.17 |