[네트워크] 1장 정리
DHCP 란?
IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당하는 프로토콜이다.
어떤 장소에 가서 네트워크를 연결하는 순간, DHCP -> ARP -> DNS(tcp 연결을 위해 ip주소를 찾아야 함, 전국에 13개) -> TCP(http연결을 위해 tcp connection) -> HTTP(또는 SMTP, DASH 등)이 일어난다.
Internet = network edge + network core
파란색 네트워크를 관리하는 주체를 ISP(internet sevice provider)라고 한다. 여기서 streaming video 는 DASH 프로토콜을 사용한다.
- Network edge
네트워크의 가장 가장자리로, 여기에는 수많은 end system들이 존재한다.
- host (terminal, station or end node,end system) : 네트워크 트래픽을 생성/소비하는 장비로 client와 server가 있다. L5 프로토콜을 사용하는 aplication은 host에만 존재한다.(no core)
- Access network : 네트워크 가입자(사용자, Internet user) 가 처음 접속하는 망으로 집/학교,회사/이동 중에 따라 다른 기술이 사용된다. 즉, 호스트를 networt core의 edge 라우터로 연결해주는 네트워크이다.
- Network core
네트워크들의 네트워크로, 수많은 라우터들이 그물처럼 얽혀있는 구조이다.
- router (layer1/2/3로 구성되며 sub 네트워크를 연결), L2-switch (layer 2/2) or L3-switch(L2-switch + routing - WAN: VLAN을 지원하기위해 LAN 안에서 사용됨) : 두 개의 host 사이의 데이터 전달을 위한 네트워크 장비들이다.
- 대표 기술: Packet switching (Internet) vs. Circuit switching
- Communication link
- 다양한 (copper, fiber, radio) 물리계층으로 구현된다.
- 대표적인 link capacity는 bandwidth or transmission rate (단위: bps)로 평가된다. transmission rate는 초당 몇 개의 bit를 signal로 변화할 수 있는지 묻는 변수로, bandwidth와 비례한다.
즉, 사용자가 스마트폰으로 네이버에 접속한다고 해보면,
Network edge인 스마트폰이
access network인 와이파이를 통해 접속하여
network core의 기능을 통해 네이버 서버까지 패킷이 전송되고, 받을 수 있는 것이다.
IoT는 low power & high connectivity 가 핵심 요구사항이다. 5G 복잡하고 power 소비가 많아서 LPWAN (예, LoRa, SigFox) 기술들이 IoT를 위해 개발되었으나 최근 5G를 저전력으로 사용할 수 있도록 변경하여 IoT 서비스 지원하는 통신사가 등장했다.
- 18 Most Popular IoT Devices in 2023 (Only Noteworthy IoT Products) (softwaretestinghelp.com)
- 사물인터넷도 5G 쓴다…SKT, 상용 시험망 검증 완료 - 전자부품 전문 미디어 디일렉 (thelec.kr)
- 3 keywords of "protocol" : format, order and action; 프로토콜은 두 소프트웨어 모듈 사이의 주고 받는 메세지의 형식과 순서, 그리고 주고받기 전후 해야할 일을 정의한 것으로 그 두 소프트웨어는 반드시 같은 계층에 속한 모듈이다. 즉, 어떤 호스트 A의 L4 계층 소프트웨어와 다른 호스트 B의 L5 계층 소프트웨어가 데이터를 주고 받는 경우는 없다. 또한 두개의 host가 internet에 연결되기 위해서는 socket interface를 따라야하며, 이는 L1~L3을 몰라도 인터넷 연결을 할 수 있음을 의미한다. -> RFC 문서를 IEEE(L2)나 IETF(L3~L5)에서 정의한다.
cf. RFC란 request for comments 표준화를 위한 문서이다.
- 3 network performance metrics: delay, loss, throughput
- Internet service options : no-loss, max. latency, min throughput
- ISP vs. NSP
- ISP: Internet service를 파는 사업체
- NSP: Network infrastructure (link, router,... and 관련 s/w)를 파는 사업체로, 우리나라는 대부분이 ISP = NSP (예를 들어 KT, SKT, LGU+) 단, LG헬로비전 같은 알뜰폰 사업자는 ISP이고(no nsp) KT, SKT, LGU+ 같은 NSP의 망을 구축하거나 임대해서 사용한다.
cf. Hauwei는 ISP가 아니다.
- Access network : 인터넷 사용자(host)를 인터넷에 연결된 다른 access network의 host로 연결해 주는 첫번째 라우터까지를 포함한 네트워크 (즉, 바깥으로 나가는 첫번째 라우터)로, 아래와 같은 세 가지 타입(L2)으로 host와 edge router가 연결된다.
- Residential network (ADSL/HFC) : 댁내망에서는 CO를 access network의 edge router로 보기도 한다.
- xDSL(Digital Subscriber Line) exploits old telephone lines (Twisted pair copper wires); 각 집과 CO까지 전용회선(dedicated link)를 사용해서 DSLAM(CO)을 통해 PSTN망과 internet망으로 분리된다. ADSL은 집과 CO까지의 거리가 멀수록 데이터 속도(bps)가 떨어진다. 이걸 보완해서 나온게 VDSL이다. 즉, kt가 집집마다 깔아놓은 구리 전화선을 그대로 이용해 인터넷 망을 증설했다. cf. CO는 access network를 벗어나 처음으로 연결되는 지점이다.
- HFC exploits cable TV network which consists of coaxial cable and optical fiber cables; 여러 집 CMTS까지 coaxial cable(동축 케이블)의 속도를 공유(shared)하는 기술이며, CMTS(CO)부터 ISP까지는 fiber가 사용되어 hybrid fiber coax라고 한다. 케이블망이 활성화 되지 않아 국내에서는 크게 성장하지 못했다.
- FTTH (Fiber To The Home) uses optical fiber cables up to home to provide Gbps. 국내에서는 2005년 KT에서 FTTH라는 이름으로 서비스를 시작하였으나, 아파트 관리사무소(혹은 아파트동)까지만 fiber가 들어오고 집과 관리사무소 사이는 Ethernet 기술을 사용하는 광랜 서비스이다. 즉, FTTB (Fiber To The Building) + Ethernet to Home이다.
cf. 현재 수도권의 집들은 ADSL가 아닌 VDSL을 사용하거나, FTTH를 사용한다.
2. Enterprise network(Ethernet/Wi-Fi): Ethernet은 local한 지역에서 유선인, Wifi는 local한 지역에서 무선인 L2 네트워크 기술이다. ethernet을 사용하는 이유는 회사 내부 간 트래픽이 많고 거리가 짧기 때문이다.
3. Mobile network(3G,4G/LTE,5G): onpenloaming(5G + wifi 6)은 글로벌하게, hotspot은 로컬지역에서 트는 것이다. cf. 1G, 2G(아날로그 → 디지털), 3G(영상통화, 스마트폰), 4G(속도), 5G(고용량)
두 가지 network core 기술: 패킷 스위칭(P.S) 및 회로 스위칭(C.S)
- PS에서 메세지를 자르는 이유는
- Core Network Delivery Efficiency (retransmission): 패킷 손실시 손실된 부분만 재전송
- Shard media multiplexing: access network는 보통 shared, 어느 한 user가 독점하지 않도록 골고루 전송
- parallel: 작은 사이즈의 패킷으로 쪼개보내면 e2e delay 감소
- PS와 C.S.의 차이점을 설명해 주시겠습니까?
둘다 WAN 기술로,
회로 스위칭(CS)
1. 고정된 수의 사용자가 동시에 사용할 수 있습니다.
2. 데이터 전송 시작 전 연결 설정: 소스와 대상 간에 경로(end-to-end path)와 리소스(link BW) 예약을 통한 순차적 전송
3. 데이터 전송 중(src와 dst 호스트 간의 통신) : NO (transmission/processing/queueing) delays
4. Connection(route and resource(link BW)) set-up delay이 데이터 전송 시작 전 발생
5. 예시로는, 음성용 PSTN -> 모두 다 같은 bsp를 쓰는 이유가 보내다가 목소리 끊기면 안되니까
6. 하나의 회선을 독점해서 쓰지만 회선 안의 대역폭은 그 안의 user들끼리 나눠쓸 수 있는데 이때 나누는 방법으로 FDM과 synchronous TDM(싱크가 sender와 receiver이 딱 맞아 떨어지게 시간을 나눔)이 존재한다.
패킷 스위칭(PS)
1. 데이터 전송 시작 전 연결 설정 없음
2. 하나의 큰 메시지가 여러 개의 작은 패킷으로 나뉨 -> 각 패킷은 통신 중에 "독립적으로" 전달(라우터는 어떤 패킷이 어떤 애플리케이션에 속하는지 모름) -> 패킷의 헤더값을 보고 라우팅테이블을 만들어감
3. btw src 및 dst 통신 중 (transmission/processing/queueing) delays --> 지연/손실이 발생할 수 있음
4. L1의 statisical TDM(또는 비동기 TDM): 지정된 time slot이 아니어도 link가 available하면 바로 통신 가능하여, 한 명의 사용자가 전체 링크 속도를 사용할 수 있음
5. 예 : 인터넷, bursty data가 막 들어올 때
6. 버퍼가 무조건 필요: 연속적으로 처리해야 할 때, 프로세스들의 속도가 다르면 순차적으로 처리하기 위해 기다리라고 존재 하며 input queue의 arrival rate와 switching speed 보다 transmission rate가 떨어진다면 (Rin ≥ Rout) 버퍼 오버플로우 발생(드랍)
- Rbps 링크를 통해 L-bit 패킷을 전송하기 위한 transmission delay = (L-bit)/(R-bps) = L/R sec
- R bps 링크를 통해 하나의 메시지(=3 L-bit pkts)를 전송하기 위한 transmission delay = 3 x (L/R)초
- 코어 네트워크에서 동일한 메시지에 속하는 여러 패킷이 병렬로 전송되기 때문에 3개의 Rbps 링크를 통해 하나의 메시지(=3 L-bit pkts)를 전송하기 위한 End-to-end t ransmission delay는 (3 x (L/R)) x 4 sec가 아니다.
- 패킹 스위칭 네트워크의 기본 작동 : store(패킷 단위로 전송하기 때문에 하나의 패킷이 올때까지 기다리고 헤더에서 목적지를 확인) 및 forward(모든 라우터들이 마지막 host 목적지에 맞는 output link로 전달)
1) L개의 비트들이 A 포트의 buffer에 저장된다.
2) 패킷해더를 보고 목적지 주소로 보내지기 위해 라우팅 테이블을 검색한다.
3) L-비트 패킷이 A에서 B로 스위칭 된다.
4) L-비트 패킷이 B의 buffer (queue)에 한동안 저장되어 있다.
5) L개의 bit들이 signal로 변환(transmit) 된다. (L/R)
cf. transmission delay는 그대로이다.
- 패킷 스위칭 네트워크에서의 라우팅 대 포워딩
- 라우팅은 라우터 간에 제어 메시지를 교환하여 소스 호스트에서 대상 호스트로의 e2e 경로를 지정하는 것입니다.
- 포워딩 은 포워드 테이블(FIB, Forwarding Information Base)을 사용하여 입력 포트에서 출력 포트로 패킷을 전달하는 것이다.
cf. 패킷 스위칭은 delay-sensitive한 데이터 전송에 적합하지 않다.
1Mbps짜리 link를 몇 명의 user까지 사용하게 할 수 있을까?
- circuit-switching: 10 users (100/10). dedicated되어 resource sharing 불가
- packet switching: 35 users
- 35명의 user가 동시에 internet connection을 열었을 때, 동시 10명 이상이 action 할 확률 < 0.0004 ⇒ 시간에 따라 다른 user들과 resource sharing을 할 수 있다
- but, 35명을 넘면 network congestion이 발생해 queueing delay가 커지고 심하면 loss가 발생하게 되므로 망 사용자가 느끼는 서비스질(속도)가 떨어지게 된다.
- 그렇다면 packet switching이 항상 더 나을까?
- : bursty data(sent in short & sudden periods of activity)에겐 더 나음
(resource sharing, call setup x)
- 인터넷 구조: 다중 계층 구조
- 서로 다른 네트워크(일반적으로 다른 ISP)를 연결하는 두 가지 방법: ISP들끼리 연결된 제 3의 IXP를 생성(KT, SKBB, LG u++, kznx등) 및 peering(정치적 이해관계에 따라 높은 계층까지 연결하지 않고 직접 통신하여 돈을 아끼는 방법으로 두 ISP들 사이에 주고받은 트랙픽 양이 유사할 때 사용)
- 접속 지점(PoP:point-of-presence)는 customer ISP에서 provider ISP로 연결되는 라우터들의 집합이다.
- multi-home 네트워크의 장점은 상위 계층과 최소한 2개 이상의 connection을 맺음으로써 하나의 ISP에 문제가 생겨도 정상적인 서비스를 유지해 신뢰도를 높일 수 있다는 것이다.
- 콘텐츠 제공자 네트워크(CPN) 또는 콘텐츠 전송/배포 네트워크(CDN)
- CPN과 CDN은 호환되지만 CDN이 더 널리 사용됩니다.
- CDN의 목표는 캐시를 현명하게 배치하여 콘텐츠 사용자가 느끼는 대기 시간을 줄이는 것입니다. (일반적으로 사용자에게 더 가까움)
- 1-hop 지연(또는 노드 지연) : processing delay(input 버퍼에서 헤더 IP주소 까서 목적지 확인 후 output port결정 하는 시간)--> queueing delay(forwarding table 보는 시간) -> transmission delay(모든 bit가 signal로 바뀌는 시간 = Rbps/Lbit) --> propagation delay(하나의 bit가 다음 라우터까지 도착하는 시간(1hop이동)=d(링크 길이)/speed)
cf. processing delay는 거의 0에 수렴한다.
cf. 위성통신 혹은 planet간의 통신에서는 transmission delay 보다 propagation delay가 더 크다.
- e2e 지연 = 홉 수 X 홉당 4가지 지연
- 출력 큐의 Queueing delay는 "TI(Traffic Intensity)"라는 인덱스로 추정할 수 있다. 이는 지금 큐가 얼만큼 찼는지를 알려준다.
- TI = (출력 대기열로의 도달 속도) / (출력 대기열에서 출발하는 속도)로 output 큐의 밀집도를 측정하는 지표이다.
- arrival rate into output queue = L-bits x a packets/sec. (초당 a개의 L-bit 패킷이 큐에 진입)
- 출력 대기열에서 출발 속도 = 발신 링크의 전송 속도 R bps
- T1값이 1에 가까워질수록 queueing delay가 급격히 증가한다.
- 호스트(A)에 대한 실제 지연을 측정하는 방법.
- Window 시스템에 "tracert(A의 IP 주소)"를 입력한다.
- Linux 또는 Unix 시스템에 "traceroute(A의 IP 주소)"를 입력한다.
- 이 명령은 IP 헤더 및 ICMP(Internet Control Management Protocol) 메시지의 TTL(Time-To-Live) 필드를 사용한다.
packet loss가 일어나는 이유는 1) 전용회선이 없음 2) 버퍼의 사이즈가 유한하기 때문이다. 그게 싫기때문에 host tcp가 재전송을 요청한다 (no udp). 가끔 L2에서도 하긴 한다.
- " Throughput "을 정의할 수 있습니까? How is “Throughput” different from “transmission rate or link bandwidth” ?
- Throughput: amount of bits delivered between two end hosts(e2e) over a specific period of time; it is a real-time measurement. (수업시간에 external link에 부과되는 데이터량이 증가하면 external link가 bottleneck 링크가 될 수 있다고 한 것이 real-time measurement를 의미함. 일시적인 부하는 괜찮으나 지속적으로 external link가 bottleneck 링크가 되면 외부 링크 증설이 필요할 수 있음.)
- transmission rate: 일반적으로 하나의 링크의 용량(전송된 비트의 양, 즉 초당 비트 ---> 신호, 실시간 측정이 아닙니다.
- 단위는 둘 다 bps(초당 비트 수)입니다.
- Throughput은 두 호스트 간의 e2e 경로에서 bottlenect link(실시간 측정으로 제일 낮은 link bandwidth)에 의해 결정됩니다. => min( Rbps over e2e path)
- 응용 프로그램 계층: (네트워크 응용 프로그램, 메시지) -> OS
- 전송 계층: (프로세스 간 통신, (TCP) 세그먼트, 포트 번호) -> OS
- 네트워크 계층: (e2e 데이터 전달(라우팅), 데이터그램 또는 패킷, IP 주소) -> OS
- 링크 레이어: (1홉 데이터 전달, 프레임, MAC 주소) -> NIC
- 물리 계층: (비트 전송) -> NIC
※ 4계층 TCP는 5계층의 message를 break-down하므로 TCP segment라고 명명하나, UDP는 break-down을 하지 않고 그대로 IP 에 내려 보내므로 UDP segment 라는 말은 하지 않습니다. 오히려 3계층 PDU의 body에 있는 내용과 동일하다고 하여 UDP datagram 이라고 부릅니다. 레이어링을 하면 다른 레이어에 영향을 미치지 않고 해당 레이어만 수정이 가능하다는 장점이 있지만, 레이어마다 기능을 딱딱 정해두는게 어렵다는 문제가 있다. + 다른 레이어의 정보를 참고해야하는 경우가 있다.
#47의 답변
(a) 링크 전송 지연 = L/R
= 4000비트 / 1000Mbps = 0.004000밀리초.
(b) 1000M / 4000bits = 링크는 초당 250000 패킷을 전송할 수
있습니다.
의 답변 #58
- 달성 가능한 최대 최종 엔드 처리량은 20Mbps입니다.
- 20Mbps의 마지막 홉 전송 용량은 공유 링크 전송 용량(400/4 = 100Mbps)의 40/<> 미만이고 첫 번째 홉 전송 용량인 <>Mbps보다 작기 때문에 병목 링크인 최종 홉의 전송 용량입니다.
- 만일 서버쪽이 모두 90Mbps, 중간 링크가 300 Mbps, 클라이언트쪽이 모두 100 Mbps라면 ? Throughput은 ? 300/4 = 75Mbps
- Virus (Spyware, Adware) v.s. Worm (DDos -> see botnet) (WORM = Write Once Read Many): 바이러스는 기생해서 실행, 사용자의 개입 필요, 컴퓨터 내 공격을 한다.
웜은 네트워크 링크나 서버를 공격하는 malware로 독자적으로 실행, 사용자의 개입이 필요없다. Dos는 쓸데없는 패킷을 계속 보내서 진짜 customer에게 응답을 못하도록 하는 것이다. - Sniffing (Wireshark)은 케이블이 붙어있기만 하면 share할 수 있는 ethernet과 wireless 네트워크 장비로부터 정보를 빼내서 보는 것이다. 단, 두 사용자가 p2p면 공격이 불가능하다.
- Spoofing (Man-in-the middle attack)은 B인척하며 중간에서 내용을 바꿔 보내는 것으로, 해결책 메시지의 엔드포인트 인증을 하면 된다. ex) TLS(Transport Layer Security)
- Zero-day attack : 소프트웨어 출시 후에 보안취약점을 개선한 patch가 나오기전에 공격하는 방식이다. 이는 빠르게 백신을 만들어 다음 버전을 내놓음으로써 해결한다.
인터넷의 역사
- ARPAnet(60년대)--> ALOHAnet(70년대-> L2 프로토콜 막 나옴) --> NSTnet(80년대)
- 최초의 인터넷 서비스는 email
- 4 인터넷 원칙(70년대)
- minimalism between ISPs, autonomy within ISP : 서로다른 네트워크 관리는 각자 알아서 그들 사이의 연결은 최소의 요구사항으로 완성한다.
- No guaranteed service (best-effort service): 라우터는 어떤(loss/delay) 서비스도 보장하지 않으며 fast delivery에만 집중한다. best-effort란 throughput, delay, loss 등의 서비스 품질을 보장하지 않으며 그때그때 망 상황에 따라 품질이 결정되는 서비스이다.
- No record in routers (stateless routing) : 라우터는 처리한 패킷에 관한 어떤 정보도 기록/사용하지 않는다.
- No centralized control (distributed control) : 각 라우터들이 독자적으로 라우팅을 결정한다. (각 ISP의 자치권을 보장)
- L5(process) 의 응용 프로그램 유형
- 지연 허용, 처리량 허용이 가능하지만 손실에 민감한 응용 프로그램: 전자 메일, 웹 문서 검색, 문자 메시지, 텔넷, 파일 전송 서비스 등
- 손실에 내성이 있지만 지연에 민감하고 처리량에 민감한 애플리케이션: 실시간 스트리밍, 대화형 게임, VoIP(Voice over IP) 등
- 손실에 민감하고 지연에 민감하며 처리량에 민감한 애플리케이션: VoD 스트리밍
- 공인 IP 주소 : 라우팅 가능, DNS 확인, 결제(또는 임대)
- 개인 IP 주소 : 라우팅 불가, DNS에서 확인할 수 없음, 무료
- 서버에 영구 및 공용 IP 주소가 필요한 이유는 무엇입니까? 서버에게 갈때 호스트네임으로 들어가서 ip를 찾아야 하므로 DNS가 이미 알고 있어야 한다(다이나믹이면 계속바뀌는데 DNS도 계속 바꿔야되는게 너무 귀찮다.)
- 명령 창을 클릭하거나 입력해 볼 수 있습니다
- https://mylocation.org
- https://www.iplocation.net/ip-lookup
- tracert, ipconfig, netstate -rn, netstate -a, 작업 목록
- Client - Server 구조: 대부분의 웹이 사용(HTTP, SMTP, DNS)하며, Client Process in Client Host & Server Process in Server Host
- peer to peer 구조: BitTorrent (file sharing), Internet Telephony (Skype), IPTV가 있으며, Client Process & Server Process in the same host로 self scalability가 좋다
- P2P 아키텍처에 대한 우려
- 개방성으로 인한 보안(임의 사용자는 피어가 될 수 있음-> 보안이 나쁜 호스트가 서버가 될 수 있음)
- Peer의 다양한 컴퓨팅 환경(스토리지, 메모리, CPU, 링크 BW)에 따른 안정성 확보
- 사설 NW의 피어로 인한 ISP의 P2P 친화적 서비스(peer가 프라이빗주소를 가지다가 갑자기 서버역할을 해야한다면..?)
=> p2p 구조로 설계할 때, 대부분의 ISP가 upstream보다 downstream이 큰 용량으로 가지고 있으므로, p2p friendly하게 설계되어야 하며 보안문제를 해결해야한다.
- 소켓(api)은 응용 프로그램 계층과 전송 계층 사이의 문입니다.
- 애플리케이션 개발자는 소켓을 올바르게 사용하기만 해도, 네트워크 서비스(전송/네트워크/링크 계층의 서비스)에 신경 쓸 필요가 없습니다.
- 인터넷의 프로세스는 (프로세스가 실행 중인 호스트의 IP 주소, 호스트의 프로세스에 할당된 포트 #)으로 식별할 수 있다. -> 프로세스는 port #을 할당받는다. 두 프로세스끼리 메세지를 주고 받을 때, 기계를 찾기 위해서는 링크에 부착된 IP 주소를, 기계 안에서 해당 프로세스를 찾기 위해서는 port #를 알아야한다.
- ip 주소는 os에 의해 소프트웨어적으로 설정(1개~ 여러개)하는 것인데, 인터넷으로 나갈때 하드웨어인 이더넷 카드가 없으면 의미없다.
- 전송 계층 프로토콜의 기본 서비스는 프로세스 간 통신을 위한 프로세스(소켓)를 찾는 것이다.
- TCP가 지원하는 서비스:
- RDT(Reliable Data Transfer) : 연결 지향 설정, 오류 감지를 위한 체크섬, 시퀀스/ACK 번호, 타임아웃, 재전송(retx)을 통한 no loss 및 in-order 전달 by TCP buffer by connection set-up
- 혼잡/흐름 제어는 네트워크의 라우터에서 TCP 버퍼 오버플로를 방지하도록/ receiver 호스트에서 넘치지 않도록 sender TCP의 전송 속도를 조정한다.
- UDP가 지원하는 서비스: dns query(레코드 물어보기) 같은건 작고 간단하므로 udp를 써서 보낸다. 우리는 이걸 배운다. (TCP도 되긴함)
- 최선의 서비스를 제공하는 IP와 같은 것은 없습니다.
- 단, UDP는 (de)multiplexing(프로세스 찾기) 및 오류 감지(인터넷 체크섬 -> 에러패킷 버리거나 알려줌)를 수행합니다.
- TCP(또는 UDP)를 통한 HTTP 프로토콜(ver1/2/3)
- Base-html에는 html 파일에 포함된 객체(jpeg, hava applet, audio ...)의 텍스트와 URL이 포함되어 있습니다. (객체가 온게 아니다.)
- 각 객체(base-html 파일 포함)는 별도의 HTTP 요청/응답 메시지를 사용하여 별도로 요청/수신됩니다. (-> stateless라 어디서 온건지/어디로 간건지 저장안해두니 10개보내면 10개 응답 다 해줘야된다)
cf. stateless란 서버가
3.웹 서비스를 지원하기 위해 HTTP/1.1은 TCP를 사용합니다.
- TCP 기반 HTTP의 3 가지 유형 :
- non-persistent HTTP는 object하나가 오면 바로 연결을 끊어버리지만, persistent HTTP는 object를 파이프라이닝으로 후루룩 가져올 수 있다.
1. 비영구 TCP conn (no parallel): 클라이언트 하나가 랜덤 connection(소켓)을 하나
2. 비영구 TCP conn with parallel(파이프라이닝 가능): 클라이언트 하나가 랜덤 connection(소켓)을 여러개 -> 불공정해서 안 씀(한명만 네트워크 많이 쓰니까 나중에 보면 알겠지만 TCP는 클라이언트마다 전용회선을 써서 공정하게 사용)
cf.
한 번에 3개를 열 수 있다 → 3 request & response at the same time
⇒ response time: 2RTT + (2RTT)*4 = 10RTTs (시험 문제)
3. 영구 TCP conn: 클라이언트 하나가 전용 connection(소켓)을 하나 -> 랜덤이 아니다 보니, 비영구보다 같은 시간내 허용가능한 클라이언트 수가 줄음 단, 파이프라이닝이 가능하다 -> 앞 패킷이 뚱뚱하거나 유실/에러나면 유저가 느끼는 delay가 길어진다는 문제가 있다.
- 위의 세 가지 HTTP 유형을 각각 사용할 때 N개의 객체가 포함된 웹 페이지를 다운로드하는 데 필요한 RTT는 몇 개입니까?
- 위의 세 가지 HTTP 유형을 각각 사용할 때 클라이언트 / 서버 호스트에서 동시에 열리는 소켓(connection)은 몇 개입니까?
- HTTP 파이프라이닝이란 무엇입니까? HTTP pipelining이란 HTTP Request message가 응답을 기다리지 않고 single TCP connection으로 message를 이어 전송하는 것으로, TCP의 sliding window에 의해 server의 ACK 없이도 client의 sender buffer에서 server의 receiver buffer로 msgs가 한 번에 가게 된다.
웹 쿠키(웹 프록시)
- HTTP는 서버에서 HTTP 클라이언트의 상태를 유지하지 않는 상태 stateless protocol 이다.
- 그러나 쿠키를 사용하여 서버는 클라이언트에 대한 정보를 유지할 수 있다. 서버가 먼저 헤더에 쿠키를 세팅해서 클라이언트로 보낸다.
- 쿠키 ID는 어떻게 설정하고 사용하나요? 그 이점은 무엇입니까? 쿠키를 쓴다고 개인정보가 누출되는게 아니다. 서버는 클라이언트에게 ID를 할당하고 브라우저에서 쿠키를 enable 해두면 서버는 클라이언트를 ID로 관리한다.
- What is the third-party cookie? 다른 회사에서 발행한 쿠키를 공유하여 사용하는 것.
HTML request message
- TCP가 이미 연결되어 있는데도 HTTP get 메시지에 원래 서버의 URL이 포함되는 이유는 무엇입니까? Receiver가 아닌 Proxy 서버와 TCP connection을 맺었을 수 있음. 이 msg가 Server가 아닌 Proxy Server로 갈 수 있고, Proxy에 cache가 없다면 Server와 다시 connection을 맺어야 하므로 host명이 필요하다.
- 조건부 GET은 웹 프록시 또는 웹 브라우저가 콘텐츠를 최신 상태로 유지하는 데 사용되는 방법으로, 현재 index.html을 가져오고 있다.
- If-Modifed-Since 라는 필드가 있다면 이미 받은 적이 있는 파일이 update되었는지 다시 한 번 request를 보낸 것. 서버는 updated 되지 않았다면 not-modified res를 보낸다.
- Keep-Alive는 persistent HTTP 쓰려는 것으로 115초동안 TCP Connection 끊지 말라는 뜻이다.
- 웹 프록시의 장점
- 평균 지연을 줄입니다 (클라이언트에 좋음). hit ratio가 0.4면 나가는 60%도 경쟁자 줄어서 빠르고 40%는 아예 안나가서 개빠르다.
- 액세스 링크 BW 사용률 감소(액세스 ISP에 적합) 앞단의 프록시 서버가 커버해주니까
- 서버 오버헤드 감소 (열악한) 서버 오버 헤드 감소 (웹 서버에 적합)
- 외부 웹 서버에 대한 액세스를 감사하거나 제어(ex. 어린이 웹 보호)하는 데 사용할 수 있습니다.
- P2P caching 주의점 : 만일 ISP가 PSP caching을 지원한다면 peer들이 저작권침해 파일을 주고받을 수 있으므로 자칫 ISP가 법을 위반할 수도있어 주의가 필요함.
access link의 속도는 1.54M bps => R
response에 담긴 object는 100K bits => L(패킷 길이)
초당 큐에 얼만큼 들어오는지 15/sec => a
lan utilization = 1.5M bps/ 1G bps = 0.0015
access link utilization = TI = La / R = 1.5M/1.54M = 0.97
cache hit 40% => 초당 들어오는 15개의 request 중 40%가 internal traffic
cache miss 60% => 초당 들어오는 15개의 request 중 60%만 들어옴
avg data rate to browser는 1.5M bps * 0.6 = 0.9M bps 속도로 안으로 들어온다.
access link utilization: 58% (=TI = 0.9Mbps/1.54Mbps) ← enhanced!
- total delay = 0.6(delay from origin servers) + 0.4(delay when satisfied at cache = 0에 수렴)
- delay from origin servers = avg access delay + avg internet delay
access ISP 내부에 Web cache를 설비할 경우 access ISP 외부로 나가는 external access link의 트래픽이 감소함으로써 delay가 줄어드는 문제
문제 해석
avg Obj size = 900Kbits = L
avg Req/Res rate = 15/sec = a = B = arrival rate of the Obj to the access link
amount of time it takes from when the router on the Internet side of the access link forwards an HTTP request until it receives the response = RTT
(a) total avg response time = avg access delay + avg Internet delay = 0.6s + 2s = 2.6s
Δ = avg time to send an object over the access link = 900Kbits/15Mbps = 0.06s
β = arrival rate of objects to the access link = 15/sec
avg access delay = ∆/(1 − ∆β) = 0.06/0.1 = 0.6s
(b) total response time with cache hit rate is 0.4 = 0.6(2+0.13) = 2.178
β = arrival rate of objects to the access link = 9/sec
→ avg access delay = ∆/(1 − ∆β) = 0.06/0.46 = 0.13(둘째자리에서 반올림)
- 단점 웹 프록시
- 웹 서버에 저장된 웹 콘텐츠가 오래되었을 수 있습니다.
- 웹 캐시는 원본 이미지(원본 서버와 웹 서버 간의 불일치)를 변환할 수 있습니다. "캐시 제어: 변환 없음"
HTTP의 역사(persistent tcp만 생각)
- HTTP/1 over (선택 사항) SSL/TLS over TCP
- 클라이언트의 요청 순서(큰애가 앞에가면 딜레이 개길어짐)또는 TCP의 rdt 서비스(재정렬 및 재지정)로 인한 HoL 차단( 작은 물체는 이전에 머리에 전달된 큰 물체로 인해 표시가 지연, 순서가 잘못된 배달 개체는 손실된 메시지가 다시 전송될 때까지 TCP의 수신 버퍼에서 지연 ) 문제
- 2년 TCP를 통한 TLS1.3을 통한 HTTP/2015
- 응답 우선 순위(http1문제 중 긴애부터 안보내는 거 해결) / 푸시 기능(요청받지 않은 메세지를 응답으로 준다) / 프레이밍 및 다중화 : 서버가 각 객체 응답을 여러 프레임으로 나누고 서로 다른 객체의 프레임을 인터리브하는 경우
- HTTP/2 기반의 웹(HTTP) 서버는 별도의 요청 메시지를 기다리지 않고 base-HTML을 전송한 직후 응답 메시지(객체)를 보낼 수 있으며(push), HTTP 클라이언트가 수신하고자 하는 순서대로 응답 메시지(객체)를 전송할 수 있습니다.
- 따라서 HTTP/2는 HoL 차단을 해결할 수 있지만 여전히 앞에서 loss나면 재전송 기다려야한다.
- UDP를 통한 QUIC를 통한 HTTP/2 간소화 => object 별로 retrans, reordering을 한다
- QUIC에는 프레이밍 및 멀티플렉싱 하위 계층, TLS 및 TCP 기능(연결 관리, 흐름 제어, 재정렬 및 재지정)이 포함됩니다
- UDP를 통한 HTTP/3
- HTTP/3(2022년 <>월 표준화)는 QUIC를 통합합니다. 이제 HTTP가 스마트해졌습니다. 코어 네트워크의 관점에서 항상 좋은가요?
1. network application을 설계하는 소프트웨어 엔지니어는 application이 주고받는 메세지가 네트워크에서 전달(routing)되는 절차를 포함하여 프로그래밍해야 한다.
⇒ F. transport layer와 그 하위 계층들은 OS에 의하여 실행 되므로, network application을 설계하는 소프트웨어 엔지니어는 socket만 알면 된다.
2. Circuit-switching에서 데이터 전송 전에 call set-up하는 것은 전송 경로를 설명함과 동시에 중간 링크의 대역폭도 할당하는 것이지만, TCP의 connection은 양쪽 호스트 transport계층에서 필요한 정보를 미리 주고받는다는 의미이다.
⇒ T.
3. Flow control과 congestion control의 공통점은 버퍼의 overflow를 막는 것이다. 그러나 traget하고 있는 buffer가 다르다. Flow control은 ( a ) 의 버퍼를 congestion control은 ( b )의 버퍼 overflow를 제어하는 것이다.
⇒ (a) receiver (b) router in networks
4.
인터넷 구조는 여러 개의 ISP를 거쳐 연결되는 “multi-tier hierarchy” 구조를 가진다. 이때 최 상위에 있는 ISP를 ( ) ISP 라고 한다.
⇒ Tier 1
5. congestion을 해결하는 방법 세 가지 ⇒ congestion은 NW 라우터의 output buffer에 트래픽이 몰려 전송이 매우 지연되거나, 패킷 손실이 발생하는 것을 말한다. congestion을 해결하기 위해 1. outgoing link의 대역폭을 넓히거나, 2. output buffer의 사이즈를 확대하나, 3. 동일한 목적지로의 새로운 link 증설을 통해 우회 경로를 만들 수 있다.
6. packet switching은 delay-sensitive 한 데이터 전송에 적합하게 설계되었다.
⇒ F. packet switching은 통신 도중 NW congestion으로 인한 delay 또는 loss가 발생할 수 있기 때문에, delay-sensitive한 데이터 전송에는 circuit switching이 더 적합하다.
7. 만일 내가 접근하는 홈페이지가 text와 하나의 오디오파일, 그리고 두개의 그림 파일을 포함하고 있다면, base HTML-file에는 총 3개의 URL을 포함하고 있다.
⇒ T
8. 두 호스트 사이에 TCP가 connection set-up 한다는 의미는 중간 네트워크 라우터와는 무관한 작업이다.
⇒ T. TCP connection set-up은 두 호스트의 transport layer에서 일어나는 작업이므로 transport layer가 존재하지 않는 중간 네트워크의 라우터와 무관하다.
9. HTTP가 non-persistent with parallel TCP connection을 사용하는 서버로부터 13개의 URL을포함한 base-HTML을 받은 상황을 가정하자. 만일 (서버와 클라이언트) OS가 4개의 TCP의 connection을 (4개의 TCP socket을) 동시에 열도록 허용한다고 가정하면, base-HTML을 가져오기 위해 소요된 2RTT외에 추가적으로 소요되는 시간은? (RTT로 표현하시오.)
⇒ 4개의 TCP connection을 한번에 열수 있으므로 13개의 url을 처리하기 위해서는 4번 열어야 한다. 4번 * 2RTT 이므로 8 RTT가 추가로 걸린다. 이 때 소켓은 4개를 동시에 연다.
10. (44) 어떤 클라이언트가 text 외에 10개의 object가 포함된 web page를 보고자 한다. 이때 HTTP가 non-persistent with parallel TCP connection을 사용하는 경우라면 서로 다른 TCP socket이 몇 개나 열렸다(set-up) 닫히(close)는가? 11개 = base-HTML을 가져오기 위한 TCP 1 + 10개 object를 가져오기위해 별도로 열리는 TCP socket 각 10개
11.
12.