1. Programming for communications among computers
2. Socket
- Process sends/receives messages to/from its socket
- Socket analogous to door
• Sending process shoves message out door- Two sockets involved: one on each side
웹 서버가 소켓을(socket()) 생성합니다. UDP, TCP를 선택할 수 있는 function, API입니다. 이 안에 파라미터가 들어가서 정해집니다.
bind()는 방금 생성했던 이 소켓을 특정 포트에다가 bind 시키는 것 입니다. 예를 들면, 보통 웹 서버 같은 경우에는 80번에 돌아가니까 80번에 bind. 이런 식으로 포트 번호가 적히게 됩니다.
listen()은 처음에 만든 소켓을 listen 용도로 쓰겠다 서버니까 접근 요청을 듣고 있습니다.
그리고 클라이언트로부터 뭔가 요청을 받을 준비가 됐다는 의미로 accept(). accept이 수행이 되면 클라이언트로부터 뭔가 connection이 들어올 때까지 서버는 멈춥니다.
클라이언트가 어떤 사람의 웹 브라우저에서 소켓(socket())을 열어서 connect(). 합니다. 내가 원하는 어떤 서버의 프로세스한테 connect 하는 것 입니다. 즉, 이 서버 측에 이 accept()라는 거는 클라이언트의 connect()가 불리면 상호간 통신이 진행이 되게 됩니다.
위 과정이 끝나면 소켓 둘 사이에 단단한 연결고리가 형성이 됩니다. 둘 사이에 커넥션이 맺어졌기 때문에 예를 들면 printf에서 메시지를 쓰면 디스플레이가 되듯, 이 클라이언트 소켓에다가 메시지를 쓰게 되면 저 서버 소켓에 출력됩니다.
서버도 마찬가지로 여기다가 값을 넣으면 전세계 존재하는 많은 소켓들 중에서 유일하게 이 클라이언트 소켓에서 값이 출력되는 관계를 형성하게 됩니다. 그래서 이제 read(), write()로 이어지는 거지 여기다가 write를 하면 여기서 읽을 수 있고 그게 바로 이제 통신이 되는 겁니다.