Application Layer



1. socket() : 웹서버가 소켓을 생성한다.
2. bind() : 생성한 소켓을 특정 포트에 연결하겠다.
3. listen() : 이 소켓으로 listen 하겠다. non-blocking(함수 호출 시 조건이 만족되지 않더라도 함수가 리턴하므로 해당 스레드는 계속 진행)
4. accept() : 클라이언트로부터 받을 준비가 되었다. blocking(함수 호출 시 조건이 만족되지 않으면 함수는 리턴하지 않고 해당 스레드는 대기 상태가 되는 것)
5. block until connection from client : 서버는 클라이언트로부터 연결이 들어올 때까지 block된다
6. socket() and connect() : 클라이언트가 소켓을 열고 원하는 서버의 프로세스에 connect한다. connect는 blocking
7. read() and write() : 연결이 되었으므로 읽기, 쓰기 등여러 작업 가능. 통신이 된다는 의미

8. close() : 필요한 통신이 충분히 완료되면 소켓을 닫아 연결을 끊는다.
1. Socket Creation and Setup

socket() function
type 파라미터 : TCP/UDP를 결정, 중요함!!
- TCP : SOCK_STREAM
- UDP : SOCK_DGRAM
리턴값으로 소켓의 ID값을 반환 - 이 소켓의 주소라고 보면 됨
Bind() function
accept() function
Listen() function
backlog 개만큼 queue에 담아서 처리하겠다.2. Establishing a Connection (TCP)
Connect() function






3. Sending and Receiving Data
Write() function
Read() function

4. Tearing Down a Connection (TCP)

