-
서버와 클라이언트 통신과정 , HTTP 지연이유 , TCP handshake공부일기장 2023. 8. 3. 21:51728x90반응형
SERVER
S1. create new socket
S2. bind socket to port 80
S3. permit socket connections (listen)
S4. wait for connection(accpet)
Client
C1. get IP address & port
C2. ceate new socket
C3. connect to server IP:port(connect)
SERVER
S5. application notified of connection
S6. start reading reqeust(read)
Client
C4. connection successful
C5. send HTTP request (write)
C6. wait for HTTP response
SERVER
S7. process HTTP request message
S8. send back HTTP response (write)
Client
C7. Process HTTP response
C8. close connection(close)
SERVER
S9. close connection
Explain
The client determins The ip and port number from the url .
Establishing a connection can take a while, depending on how far away the server is, the load on the server , and the congestion of the Internet
Http performance depends on the performance of TCP plumbing.
Because http is layered directly on TCP.
HTTP transaction delays
HTTP 통신지연은 서버가 오버로드 되거나 , 복잡한 동적 리소스를 실행하지 않는한, 대부분 tcp network 에서 지연되서 생긴다.
1. HTTP 가 지연되는 이유
1.클라이언트가 첫번째로 ip 주소와 port 주소를 결정한다. 만약 uri에서 호스트네임이 최근에 방문되지 않았다면, dns resolution infrastructuer를 사용하여 호스트네임을 ip address로 변경할때 수십초가 걸릴수있다.
(다행히도 , 대부분 http 클라이언트는 작은 dns cache를 유지한다. dns cache는 최근 접근한 ip address를 기억한다.
ip address가 이미 캐시되었을때 , 검색은 즉시 수행된다. 대부분의 웹 검색은 소수의 인기 사이트로 이동하기 때문에 호스트 이름은 일반적으로 매우 빠르게 해결됩니다. )
2.클라이언트는 tcp 커넥션 요청을 서버에 보낸다 그리고 기다린다 서버에서 connection acceptance을 답변할때까지 connection을 setup 할때 지연이 발생한다 (매일 새로운 tcp 연결) .
3.연결이 생성되자마자 ,클라이언트는 새롭게 설립된 tcp파이프통해 http 요청을 보낸다. 웹서버는 tcp연결로부터 요청 메세지를 읽고 요청을 처리한다. 요청 메시지가 인터넷을 통해 이동하여 서버에서 처리되는 데 시간이 걸립니다.
TCP 네트워크 지연의 크기는 하드웨어 속도, 네트워크 및 서버의 로드, 요청 및 응답 메시지의 크기, 클라이언트와 서버 사이의 거리에 따라 달라집니다. 지연은 또한 TCP 프로토콜의 기술적 복잡성에 의해 상당한 영향을 받습니다.
2. TCP 지연 원인과 성능 영향 :
- tcp connection 의 handshake
- tcp slow-start 혼잡제어
- 데이터 집계를 위한 Nagle's 알고리즘
- TCP의 지연된 승인 알고리즘 ?
- TIME_WAIT 지연 과 port 소진
728x90반응형'공부일기장' 카테고리의 다른 글
수학공부하자.. 할거없다.. (0) 2024.04.23 토비의 스프링 공부 -1 (0) 2023.12.12 HTTP method 공부 (HEAD,TRACE,OPTIONS) (0) 2023.07.25 http version 설명 (0) 2023.07.24 jvm ,바이트코드,inbound,outbound,downstream (0) 2023.07.18