

Server IP
Server Port
그리고 어떤 프로토콜을 사용할 것인가
이것들을 정해서 소켓에 매핑을 시킨다.
그럼 요청을 하게 되면 맨 처음 LISTEN SOCKET이 첫 요청을 받아들인다.
그리고 CLIENT SOCKET을 만들어낸다.
이 CLIENT SOCKET엔 다섯개의 튜플이 존재한다.
Server IP
Server port
Protocol
Client IP
Client Port
이 Client IP와 Client Port가 새로 매핑이 되는 것이고, 클라이언트와 대응되는 소켓이 생성되는 것이다.


NGINX같은 여러 프레임워크가 만들어진다.이벤트 루프나 로드밸런싱.TCP는 반드시 그 메세지가 클라이언트가 도달하게 되어있다. 신뢰도가 높다는 뜻
웹개발에서는 TCP 알고리즘을 사용한다.

클라이언트와 서버는 가장먼저 TCP 커넥션을 먼저 해주어야한다. TCP라는 파이프 안에서 http request, response들이 이루어진다.
동시에 이 말인 즉,
TCP의 성질에 따라서 영향을 받는 다는 이야기.

protocol + domain name(+포트번호가 생략되어있다.) + path name = ip 주소.
Port 번호
- https - 443
- http - 22
'Connection':'close' //response Headers
이 경우 서비스가 엄청나게 느려지는 단점이 생긴다.

'Connection':'keep-alive' //response Headers
한번 웹서버와 클라이언트가 연결 되면 요청과 응답이 진행되고, 마지막에 연결을 해제한다.


이런 코드로 요청을 할 경우 다섯개의 파일을 가져온다.
- html
- css
- image1
- image2
- image3
이를 그림으로 나타내면 다음과 같다.
첫 TCP가 열리고, 요청과 응답이 오고간 후 TCP가 종료된다.
실제로는 이렇게 순서대로 이루어지지 않고 뒤죽박죽.
실제로는 다중 TCP, 병렬 TCP로 속도를 빠르게 하려고 한다고 한다.
가장 먼저 TCP연결이 된다.
여기서 중요한 것은 소켓이 하나만 열리는게 아니라는 점이다.

그 이후로, HTTP 요청과 응답이 일어난다.
여기서 알아야할 것은 HTTP GET Request의 응답으로 TCP ACK 한번, HTTP Response의 응답으로 TCP ACK 한번이 일어난다는 것이다.

이어서 CSS, Image 요청과 응답이 실행된다. 아까 소켓이 두개가 열렸기 때문에 병렬적으로 각각의 포트에서 요청과 응답이 일어난다.

모든 요청과 응답이 종료되었으면, 연결이 종료된다.
Clent : 연결을 종료하자 !
server : ok
server : 그럼 끊을게
Clent : ok
이런식으로 요청을 하면 요청에 대한 응답이 존재하고, 응답을 하면 응답에 대한 응답이 존재하는 것을 확인할 수 있다. 이처럼 주고 받는 것을 확인할 수 있다.


\r\n을 중간으로 해서 구분한다.

1. 처음 메소드(Get, Post, .. 가 들어가고,
2. 그 뒤로 헤더 필드들이 주루룩. 헤더 필드들은 늘어날 수 있다.

1. 처음 프로토콜, 그리고 숫자들로 state message를 표시해준다.
2. 뒤로 헤더 필드가 있고 여러 정보들이 들어있다.