1. Socket
- Transport Layer 위에서, TCP/IP 프로토콜 제어를 위한 코드를 제공.
- Socket을 사용해서 소프트웨어간 통신이 가능.
- IP: 컴퓨터의 위치를 찾기 위해서 사용.
- PORT: 컴퓨터 내에서 프로그램의 위치를 찾기 위해서 사용 = process 식별자.
- 시스템 PORT: 0~1023
- PORT 범위: short int(0~65535), 0이랑 65535는 안 씀.
2. Socket Client
socket() -> connect() -> read(), write() -> close()
3. Socket Server
socket() -> bind() -> linsten() -> accept() -> read(), write() -> close()
- bind(): socket을 인터넷 주소에 묶어줌.
- listen(): 수신 대기열을 만든다. client는 하나의 서버에 연결하지만, server는 여러개의 요청을 받을 수 있다.
- accpet(): 수신 대기열의 요청을 가져와서 연결.
- 만약 서버에서 두 client의 요청을 동시에 처리하고 싶다면? bind()된 socket은 1개지만, accept()해서 일하는 socket을 여러개 만들면 됨. 수신 대기열로 들어가는 socket과, 실제로 client와 통신하는 socket이 다르고, client와 통신하는 socket의 개수가 많으면 동시에 여러 요청 처리 가능.
출처
https://www.youtube.com/watch?v=8Ql1l048MD8
https://www.youtube.com/watch?v=INamKzKzbPc