socket
2025. 11. 25. 23:40ㆍNetwork
반응형
client - server 통신
프로세스 간의 통신임
- 소켓을 만들때, tcp udp 중 결정을 해야하는 거임
- tcp
- sock_stream
- udp
- sock_dgram
- server측 상황
- tcp socket 생성
- bind 함 (ip, port) 지정
- listen (client로 부터 요청 받을 준비됨)
- accept됨
- 클라이언트 요청 도착까지 블락됨 계속 가만히 있음
- client 측 상황
- socket 생성
- connect 요청
- 그 후 write든, read든 요청만 하면 됨
소켓 과정
-
- 소켓이 생성되면 소켓 id 반환
- listen (이 소켓을 사용해서 요청을 듣겠다)
- accept (이 소켓에 클라이언트가 요청할 때까지 기다리겠다.. connect 요청 받을 시 클라이언트 ip, port 알수 있음)
- client는 소켓 생성 후 원하는 소켓의 ip, port 작성해서 connect 요청함
- 왜 client는 bind가 필요하지 않을까? 생성한 소켓을 특정 포트에 바인딩 한다는 것은 해당 포트를 지정해서 쓰겠다는 뜻인데 클라이언트는 그럴 필요가 없음(쓰고싶으면 쓰면 되는데.. 그럼 겹치는 포트 사용으로 나중에 os가 자원 관리할때 충돌 발생할 수 도 있으니 지양하셈)
- 데이터 교환이 다 이루어진 다음에 close() 진행소켓 생성 (udp, tcp)
cleanExit() 함수는 프로그램이 종료되었을 때 필요한 정리 작업(포트 해제 포함)을 수행한 뒤, 프로그램을 종료합니다
- 프로그램이 강제 종료될 때 cleanExit 함수가 호출되어 포트를 정리하고 안전하게 종료됩니다.
- 이렇게 하면 포트가 즉시 해제되어 다른 프로그램이나 서비스에서 동일한 포트를 바로 사용할 수 있습니다.
- 시그널 기능으로 os 단에서 직접 sys.Exit() 호출해서 포트랑 프로그램 정리하게 지원함.
socket이란?
- 프로세스와 프로세스 간의 통신을 가능하게 만드는 것
반응형
'Network' 카테고리의 다른 글
| Transport layer (0) | 2025.11.25 |
|---|---|
| Transport Layer (0) | 2025.11.25 |
| osi 7 layer, application layer (0) | 2025.11.25 |
| 네트워크 구조, tcp, udp 소개 (0) | 2025.11.25 |
| Big endian, Little endian, MSB, LSB 바로 이해하기 (2) | 2024.12.13 |