웹 통신의 흐름
웹 통신의 큰 흐름
우리가 Chrome을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가?
브라우저 단계
1.
URL에 입력된 값을 브라우저 내부 규칙에 따라 해석한다.
2.
해석된 의미에 따라 HTTP Request 메시지를 작성한다.
3.
작성된 메시지를 웹 서버로 전송한다. 이 때, 브라우저는 OS에 의뢰하여 메시지를 전달한다. OS는 DNS 서버를 조회해 IP 주소를 확인한다.
프로토콜 스택 및 LAN 어댑터 단계
1.
프로토콜 스택이 브라우저로부터 메시지를 받는다.
2.
메시지를 패킷에 저장한다.
3.
수신처 주소 등의 제어정보를 덧붙인다.
4.
패킷을 LAN 어댑터에 넘긴다.
5.
LAN 어댑터는 패킷을 전기 신호로 변환한다.
6.
신호를 LAN 케이블에 송출한다.
허브, 스위치, 라우터 단계
1.
LAN 어댑터가 송신한 패킷이 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
2.
라우터는 패킷을 프로바이더(통신사)에게 전달한다.
3.
패킷이 인터넷으로 들어간다.
액세스 회선, 프로바이더 단계
1.
패킷은 액세스 회선을 통해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
2.
POP를 거쳐 인터넷의 핵심부로 들어간다.
3.
고속 라우터들 사이로 패킷이 목적지를 향해 흘러간다.
방화벽, 캐시서버 단계
1.
패킷이 웹 서버 측의 LAN에 도착한다.
2.
방화벽이 도착한 패킷을 검사한다.
3.
캐시서버가 패킷이 웹 서버에 도달해야 하는지 판단한다.
웹 서버 단계
1.
패킷이 웹 서버에 도착하면 프로토콜 스택이 패킷을 추출하여 메시지를 복원한다.
2.
웹 서버 애플리케이션이 요청에 따른 데이터를 응답 메시지에 넣어 회송한다.
3.
응답 메시지가 클라이언트에 전달된다.
TCP와 UDP의 비교
UDP (User Datagram Protocol)
•
비연결형 프로토콜로, 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.
•
주로 DNS와 같은 서비스에서 사용된다.
TCP (Transmission Control Protocol)
•
신뢰성과 순차적인 전달을 제공한다.
•
송신자와 수신자 모두 소켓이라는 종단점을 생성한다.
•
3-way-handshake를 통해 연결 설정을 한다.
•
전이중(full-duplex) 및 점대점(point-to-point) 방식을 지원한다.
HTTP와 HTTPS
HTTP의 문제점
1.
평문 통신으로 도청이 가능하다.
2.
통신 상대를 확인하지 않아 위장이 가능하다.
3.
완전성을 증명할 수 없어 변조가 가능하다.
보완 방법
1.
통신 자체를 암호화: SSL/TLS 사용
2.
콘텐츠를 암호화
HTTPS
•
HTTP에 암호화, 인증, 완전성 보호를 추가한 프로토콜이다.
•
공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다.
DNS 라운드 로빈 방식
문제점
1.
서버 수만큼 공인 IP주소가 필요하다.
2.
균등하게 분산되지 않는다.
3.
서버가 다운되어도 확인 불가하다.
개선된 방식
•
가중치 라운드 로빈 (Weighted Round-Robin): 가중치를 통해 분산 비율을 조정한다.
•
최소 연결 (Least-Connection): 접속 클라이언트 수가 가장 적은 서버를 선택한다.