기본 용어과 개념 소개 ->
네트워크를 구성하는 기본 하드웨어와 소프트웨어 컴포넌트 조사 (network의 edge와 end systems과 network에 돌아가는 network applications들을 본다) ->
computer network의 핵심을 본다. data를 전송하는 links와 switches 뿐만 아니라 end systems을 network core와 연결해주는 access networks and physical media.
edge의 개관과 컴퓨터 네트워크의 핵심을 완료한 후에, 이 챕터의 절반에서 더 넓고 좀 더 추상적인 시각을 가지게 될 것이고, 컴퓨터네트워크에서 delay, loss, throughput을 알아볼 것이다.
그러고나서 컴퓨너 네트워킝의 주된 아키텍쳐 원리들을 소개한다. 이름하여 protocol layering과 service models. 그리고 보안에 대해서도.
* 인터넷은 무엇인가?
- 컴퓨터 네트워크와 그것들의 프토콜들에 대해 이야기하기 위해 public Internet인 특정한 컴퓨터 네트워크를 우리의 주요 도구로서 사용한다. 인터넷을 구성하는 기본 하드뒈어와 소프트웨어 컴포넌트에 대해서 이야기하고, 서비스를 제공하는 기반구조의 관점에서 설명할 것이다.
- 하드웨어 소프트웨어
- 인터넷은 세계 도처에서 수억 대의 컴퓨팅 장치를 상호 연결하는 컴퓨터 네트워크이다. 처음에는 전통적 desktop PC, Linux workstations, 소위 서버가 연결되었는데, 지금은 laptops, 스마트폰, 태블릿, 티비, 게임 콘솔, 웹캠, 자동차, 환경 센서 장치, 사진 프레임, 가구 전기 보안 시스템이 연결되어있다. 이러한 장치들 모두는 hosts 또는 end systems이라고 불려진다.
- End Systems은 communication links와 packet switches의 네트워크로 함께 연결된다. 많은 유형의 communication links가 있는데, coaxial cable, copper wire, optical fiber, radio spectrum을 포함하는 physical media의 다른 유형들로 구성된다. 다른 links들은 bits/second로 측정되는 링크의 전송률로 다른 비율로 데이터를 전송할 수 있다. 그 보내는 end system은 데이터를 분할하고, 각 segment에 header bytes를 더한다. 컴퓨터 네트워크 용어로 packets라고 알려진 정보의 최종 packages는 네트워크를 통해서 destination end system로 보내진다. 거기에서 그 패킷들은 원래 데이터로 재조립된다.
- packet switch는 그것의 들어오는 communication links중의 하나에 도착한 한 패킷을 가져와서, 그 패킷을 그것의 나가는 communication links중의 하나에 보낸다. 패킷 스위치는 여러 모양과 특징을 가지고 있지만, 오늘날 인터넷에서 두 개의 가장 유명한 종류들은 routers와 link-layer switches이다. 스위치의 두 종류들은 패킷들을 그것들의 ultimate destinations로 보낸다. Link-layer switches는 일반적으로 access networks에서 사용된다. 반면에 routers는 일반적으로 network core에서 사용된다. 보내는 end system에서 받는 end system까지 한 패킷에 의해 지나간 communication links와 packet switches의 sequence는 네트워크를 통과하는 route or path라고 알려져있다.
- (패킷을 전송하는) Packet-switched networks는 여러 면에서 고속도로, 도로, 교차로 (차량을 전송하는) 교통 네트워크와 유사하다. 패킷은 짐을 싣고 이동하는 트럭과 유사하다. communication links는 고속도로와 일반도로와 비슷하다. packet switches는 교차로와 비슷하다. end systems은 건물과 비슷하다. 트럭이 교통 네트워크를 통해 path를 지나는 것 처럼, packet은 컴퓨터 네트워크를 통해 path를 지난다.
- End systems은 Internet Service Providers (ISPs)를 통해 인터넷에 접근한다. local cable 또는 telephone companies같은 residential ISPs (주거용), corporate ISPs, university ISPs, 공항, 호텔, 커피숍, 다른 공공장소에서 WIFI 접근을 제공하는 ISPs. 각 ISP는 그 자체로 packet switches와 communication links의 한 네트워크이다. ISPs는 end systems에 다양한 종류의 네트워크 접근을 제공 하는데, cable model or DSL같은 residentail broadband access, high-speed local area network access, wireless access, 그리고 56 kbps dial-up model access들을. 그 인터넷은 end systems을 서로 연결시킨 것이 전부이다. 그래서 end systems에 대해 접근을 제공하는 ISPs들도 또한 상호 연결되어야 한다. 이러한 lower-tier ISPs는 national and international upper-tier ISPs와 상호 연결된다. 그러한 것들은 Level 3 Communications, AT&T, Sprint, and NTT이다. 각 ISP 네트워크는 독립적으로 관리되고, IP Protocol을 운영하고, 어떤 naming과 address conventions을 따른다.
- End systems, packet switches, 그리고 인터넷의 다른 부분들은 인터넷 내에서 정보를 주고받는 것을 제어하는 protocols를 진행한다. Transmission Control Protocol (TCP)와 Internet Protocol (IP)가 인터넷에서 가장 중요한 프로토콜 중 두 개 이다. IP 프로토콜은 routers와 end systems 사이에서 주고받는 패킷들의 format을 명시한다. 그 인터넷의 주요 프로토콜들은 종합적으로 TCP/IP로 알려진다.
- 서비스
- 인터넷은 applications에 services를 제공하는 infrastructure로 보아질 수 있다. 이러한 applications들은 이메일, 웹서핑, 소셜 네트워크, 인스턴트 메세지, Voiceover-IP(VoIP), video streaming, distributed games, peer-to-peer(P2P) file sharing, television over the Internet, remote login, 등을 포함한다. 그 어플리케이션들은 distributed applications라고 말해지는데, 그것들이 서로 데이터를 교환하는 여러 end systems들을 포함하기 때문이다.
- Internet에 부착된 End Systems은 end system에서 작동하는 한 프로그램이 Internet infrastructure에게 또 다른 end system에 작동하는 특정한 destination program에 데이터를 보내도록 요청하는 방법을 명시하는 Application Programming Interface(API)를 제공한다. 이 인터넷 API는 보내는 프로그램이 따라야 하는 규칙의 한 집합인데, 인터넷이 그 데이터를 목적지 프로그램에 보낼 수 있게 하기 위해서이다. (챕터 2)
* What Is a Protocol?
- 인터넷에서 두 개 이상의 의사소통하는 remote entities를 포함하는 모든 활동은 protocol에 지배받는다. 예를들어, 두 개의 물리적으로 연결된 컴퓨터에서 하드웨어로 구현된 프로토콜들은 두 네트워크 인터페이스 카드 사이에 있는 "wire"에서의 비트의 흐름을 제어한다; end systems에서 congestion-control protocols는 packets이 주고 받는 사람 사이에 전달되는 비율을 제어한다; 라우터에 있는 프로토콜들은 source에서 destination으로 가는 packet의 경로를 결정한다. 프로토콜들은 인터넷 어디에서나 작동하고, 결과적으로 이 책의 대부분은 컴퓨터 네트워크 프로토콜에 대한 것이다.
- 한 protocol은 두 개 이상의 의사소통하는 entities사이에 교환되는 메세지의 format과 order를 정의할 뿐만 아니라, 한 메세지 또는 다른 event의 전달 and/or 수령시에 취해지는 행동들을 정의한다.
- 컴퓨터 네트워킹 분야를 마스터하는 것은 네트워킹 프로토콜의 what, why, how를 이해하는 것과 같다.
* Network Edge
- Network Edge 부분을 보고 Network Core로 넘어갈 것이다. Network Edge의 컴포넌트들은 우리가 일상에 쓰는 컴퓨터, 스마트폰, 장치들이다. 그러한장치들은 end systems이라고 종종 불리는데, Internet의 edge에 있기 때문이다.
- End systems들은 또한 hosts라고 또한 불려지는데, 그것들이 웹브라우저 프로그램, 웹 서버 프로그램, 이메일 클라이언/서버 프로그램같은 어플리케이션 프로그램을 host(즉, 작동시킨다)하기 때문이다. 우리는 hosts와 end systems을 상호 교환하여 사용할 것이다; 즉 host == end system. host는 clients와 servers 두 부류로 나눠지기도 한다.
- Access Network는 end system에서 또 다른 먼 거리의 end system으로 가는 경로에서 한 end system과 첫 번째 router("edge router"라고 알려진)를 연결시킨다.
- 가정에서 인터넷과 연결되는 경우를 고려하면, broadband residential access의 두 개의 가장 널리 퍼진 종류는 digital subscriber line(DSL)과 cable이다. residence(주택)는 일반적으로 wired local phone access를제공하는 같은 local telephone company (telco)로부터 DSL Internet access를 포함한다. 따라서 DSL이 사용될 때, 고객의 telco가 ISP이다. 각 고객의 DSL model은 telco의 local centeral office(CO)에 위치한 digital subscribe line access multiplexer (DSLAM)으로 데이터를 교환하기 위해 존재하는 전화선을 사용한다 (휘어진 쌍의 구리 선). 그 가정의 DSL modem은 디지털 데이터를 ㅟ하고, 그것을 high frequency tones로 전송을 위해 변환하여, 전화선으로 CO에게 넘긴다; 많은 그러한 가정으로부터의 아날로그 신호들은 DSLAM에서 digital format으로 변환된다.
- Residential telephone line은 data와 전통적인 telephone signals 둘 다를 동시에 옮긴다. 그리고 그것은 다른 주파수로 인코딩 된다:
- high-speed downstream channel, 50kHz ~ 1 MHz band
- medium-speed upstream channel, 4kHz ~ 50kHz band
- ordinary two-way telephone channel, 1 ~ 4kHz band
- 그리고 위의 이러한 접근법은 단일의 DSL link가 마치 세 개의 구분된 line인 것처럼보이게 만든다. 한 telephone call과 Internet 연결이 동시에 DSL link를 공유할 수 있게 하기 위해서이다 (frequency-division multiplexing 기법). 고객쪽에서, 한 splitter가 집에 도착한 data와 telphone signals를 분리하고, 그 데이터 신호를 DSL modem으로 보낸다. telco 쪽에서, 그러니까 CO에서, DSLAM은 그 데이터와 전화 신호를 분리하고, 그 데이터를 인터넷으로 보낸다. 매우 많은 수의 가정이 단일 DSLAM에 연결된다.
- DSL 표준은 위에 명시된 것 보다 더 높은 downstream and upstream rates를 명시하지만, 실제는 더 작다. 왜냐하면 DSL 제공자가 제공하는 서비스에 따라 residential rate를 제한할지도 모르고, maximum rate가 가정과 CO의 거리에의해 제한될 수 있기 때문이다. 엔지니어들은 분명히, 가정과 CO사이의 짧은 거리에 대해 DSL를 설계한다; 일반적으로 만약 그 residence가 CO로부터 8 ~ 16키로미터 안에 위치하지 않고있다면, 그 residence는 Internet access의 다른 형태에 의존해야 한다
- DSL이 telco의 존재하는 local telephone infrastructure를 이용하지만, cable Internet access는.cable television company의 존재하는 cable television infrastructure를 이용한다. 한 residence는 그것의 cable television을 제공하는 같은 회사로부터 cable Internet access를 획득한다. fiber optics가 cable head end를 neighborhood-level junctions과 연결한다. 그리고 전통적인 coaxial cable이 개별 가정과 아파트먼트에 도달하기 위해 사용된다. 각 neighborhood junction은 일반적으로 500 ~ 5000가정을 지원한다. fiber and coaxial cable 둘 다 이 시스템에서 사용되기 때문에, 종종 hybrid fible coax(HFC)라고 언급된다.
- cable internet access는 cable models이라는 특별한 모뎀을 요구한다. DLS model에서 처럼, 그 cable modem은 일반적으로 외부 장치이고, Ethernet port를 통해서 가정 PC에 연결된다. cable head end에서, cable modem termination system(CMTS)는 DSL 네트워크의 DSLAM과 같은 기능을 제공한다 - 즉, 많은 downstream homes에 있는 cable modem으로부터 보내진 아날로그 신호를 digital format으로 바꾼다. Cable modems은 HFC network를 두 개의 채널로 나누는데, downstream과 upstream channel이다. DSL에서 처럼, access는 asymmetric이다. 즉, downstream channle이 일반적으로 upstream channel보다 더 높은 전송률을 할당 받는다.
- cable Internet access의 한 가지 중요한 특징은, 그것이 shared broadcast medium이라는 것이다. 특히, head end에 의해 보내진 모든 packet은 모든 가정으로가는 모든 link에서 dwonstream으로 이동하고, 한 집에서 보내진 모든 packet은 head end로 upstream channel에서 이동한다. 이 이유 때문에, 몇 사용자들이 동시에 downstream channel에서 비디오 파일을 다운로드한다면, 각 사용자가 그것의 비디오 파일을 받는 실제 전송률은 협의된 cable downstream rate보다 상당히 더 낮을 것이다. 반면에 적은 사용자만 있고 그들이 모두 웹서핑만 한다면, 그 사용자들 각각은 완전환 cable downstream rate로 웹페이지들을 받을지도 모른다. upstream channel또한 공유되기 때문에, distributed multiple access protocol이 전송을 조정하고, 충돌을 피하는데 필요하다 (챕터 5).
- FTTH, AON, PON, Satellite link, Dial-up 생략
- Local Area Network(LAN)이 edge router에 end system을 연결하기 위해 회사, 대학 캠퍼스, 그리고 점점 더 가정에서 사용된다. 많은 LAN 기술의 종류가 있지만, Ethernet은 회사, 대학, 가정 네트워크에서 가장 널리 퍼진 접근 기술이다. Ethernet 사용자는 Ethernet switch에 연결하기 위해 twisted-pair copper wire를 사용한다. Ethernet switch, 즉 그러한 상호 연결된 스위치들의 한 네트워크는 차례로 더 큰 Internet에 연결된다. Ethernet access로, 사용들은 일반적으로 Ethernet switch에 100 Mbps access를 가지는 반면, 서버는 1 Gbps 또는 심지어 10 Gbps access를 가질지도 모른다.
- Internet에 wirelessly하게 접근하는 사용자들이 점점 많아 진다. wireless LAN 환경에서, wireless 사용자들은 회사의 network에(대부분 wired Ethernet을 포함하는) 연결된 access point에서 또는 거기로부터, 데이터를 주고받는다. 그리고 차례로 wired Internet에 연결된다. wireless LAN 사용자는 일반적으로 access point의 10미터 정도 안에 있어야만 한다. IEEE 802.11 기술에 기반으로 하는 Wireless LAN access는 좀 더 구어체로는 WiFi로 알려져 있는데, 모든 곳에 있다.
- 모바일 장치들이 점점 더 사용되는데, 이러한 장치들은 cellular network provider에 의해 운영되는 base station을 통해 패킷들을 주고받기위해 cellular telephony에 의해 사용되는 같은 wireless infrastructure를 이용한다. WiFi와 다르게, 한 사용자는 오직 base station의 10킬로미터 정도 안에만 있을 필요가 있다.
- Telecommunications 회사들은 소위 third-generation (3G) wireless에 엄청난 투자를 했는데, 이것은 1 Mbps를 넘는 속도로 packet이 교환되는 wireless Internet access를 제공한다. 그러나 fourth-generation (4G) of wide-area wireless networks인 더 빠른 스피드의 wide-area access 기술이 이미 이용되고 있다. ("Long-Term Evolution")LTE는 3G 기술에 그것의 근간을 가지고 있고, 잠재적으로 10 Mbps를 초과하는 전송률을 얻을 수 있다. 10 Mbps의 LTE downstream rates가 상업적 이용에서 보고되어진다. 우리는 wireless networks와 mobility의 기본 원리를 다룰 뿐만 아니라, 챕터 6에서 WiFI, 3G, LTE 기술 (그리고 더 많이)들을 다룰 것이다.
- 비트는 physical medium(물리적 매개체)를 통해 electromagnetic waves 또는 optical pulses를 전달하여 보내진다. physical media의 예시들은 twisted-pair copper wire, coaxial cable, multimode fiber-optic cable, terrestrial radio spectrum, satellite radio spectrum을 포함한다.
- Physical media는 guided media와 unguided media로 나눠진다. guided media로, 그 waves는 fiber-optic cable, twisted-pair copper wire, coaxial cable같은 solid medium을 따라 guided된다. unguided media로, waves는 대기와 outer space에서 전파된다, wireless LAN or digital satellite channel에서 처럼.
- 가장 싸고 흔히 사용되는 guided transmission medium은 twisted-pair copper wire이다. 100년이 넘는 동안, 그것은 telephone networks로 사용되어 왔다. Unshielded twisted pair (UTP)가 한 건물 안에서, 컴퓨너 네트워크, 즉 LANs을 위해서 흔히 사용된다. twisted pari를사용하는 LANs에 대한 데이터 전송률은 10 Mbps ~ 10 Gbps의 범위를 갖는다. 얻어질 수 있는 데이터 전송률은 wire의 두께와 전송자와 수신자 사이의 거리에 의존한다.
- coaxible cable은 cable television systems에서 흔하다. Coaxial cable은 guided shared medium으로서 사용될 수 있다.
- Foptical fiber는 각 pulse가 한 비트를 나타내고, light의 pulses를 전도하는 얇고, 유연한 medium이다. 단일 optical fiber는 엄청난 비트 전송률을 지원할 수 있다. 초당 10 or 심지어 수백 기가바이트까지. 그것들은 electromagnetic 간섭에 면역이고, 100 킬로미터까지는 매우 낮은 신호 감쇄를 갖고, 매우 tap하기에 어렵다. 이러한 특징은 fiber optics가 선호되는 long-haul(장거리) guided transmission media로 만들었다, 특히 해외 연결에 대해서. 그러나 가격이 너무 비싸다.
- 라디오 채널들은 electromagnetic spectrum에서 신호를 옮긴다. 설치될 어떠한 물리적 wire를 요구하지 않고, 벽을 뚫을 수 있고, 모바일 사용자와 연결성을제공하고, 잠재적으로 장거리 신호를 나를 수 있기 때문에 매력적인 매체이다. 라디오 채널의 특징은 크게 전파 환경과 신호가 옮겨지는 거리에 의존한다. 환경 요인들은 path loss, shadow fading, multipath fading, interference를 결정한다. Terrestrial radio channels는 광범위하게 세 개의 그룹으로 분류될 수 있다: 매우 짧은 거리에 작동하는 것(1 ~2미터), local areas에 작동하는 것 (10 ~ 몇백미터), 넓은 지역에서 작동하는 것(몇십 킬로미터)
- communication satellite는 ground stations이라고 알려진, 두 개 이상의 Earth-based microwave transmitter/receivers를 연결시킨다. 그 satellite는 한 frequency band에서 transmissions을받고 repeater를사용하여 signal를 재생성하고, 또 다른 frequency에서 그 신호를 전송한다. 위성의 두 종류가 의사소통에서 사용된다: geostationary satellites와 low-earth orbiting (LEO) satellites.
- Geostationary satellites는 영구적으로 지구의 같은 장소 위에 남아있다. 이 stationary presence는 위성을 지구의 표면 위로 36,000 킬로미터의 궤도에 두어서 얻어진다. ground station으로 부터 위성을 통해 다시 ground station으로 돌아오는 이 큰 거리는 280 milliseconds의 상당한 신호전파 지연을 도입한다. 그럼에도 불구하고, 수백 Mbps의 속도로 작동할 수 있는 satellite links가 DSL 또는 cable-based Internet access에 대한 접근 법이 지역에서 종종 사용된다.
- LEO 위성은 지구에 더 가깝게 배치되고, 영구적으로 지구에서 한 장소 위에 있지 않는다. 그것들은 지구 주위를 회전하고 (달이 하는 것 처럼), 서로와 의사소통할지도 모른다, ground stations과 함께도. 한 지역에 대해 지속적인 coverage를 제공하기 위해, 많은 위성들은 궤도에 위치될 필요가 있다. 현재 개발중인 많은 low-altitude communication systems이 있다.
* The Network Core
- 네트워크 어플리케이션에서, end systems은 서로 messages를 교환한다. source end system에서 destination end system으로 한 메세지를 보내기 위해, source는 긴 메세지들을 packets이라고 ㅏㅇㄹ려진 더 작은 data의 chunks로 분해한다. source와 destination 사이에, 각 패킷은 communication links와 packet switches (두 개의 주도적인 종류가 있는데, routers와 link-layer switches이다). 만약 source end system 또는 한 packet switch가 R bits/sec의 전송률을 가진 link에 대해 L bits의 한packet을 ㅗ낸다면, 그 패킷을 전송하는 시간은 L/R seconds이다.
- 대부분의 packet switches는 links에 대한 입력시에 store-and-forward transmission을 사용한다. Store-and-forward transmission은 packet switch가 그 패킷의 첫 번째 bit를 외부 link로 전하기 시작하기 전에 전체 packet을 받아야만 한다는 것을 의미한다.
- 각 packet switch는 그것에 부착된 여러 links를 가진다. 각 부착된 link에 대해서, 그 packet switch는 output buffer를 가진다 (또한 output queue라고 불려진다). 그리고 그것은 router가 그 link로 막 보내려하는 packets들을 저장한다. 그 output buffers는 packet switching에서 주된 역할을 한다. 만약 도착하고 있는 패킷이 한 링크로 전송될 필요가 있지만, 또 다른 패킷의 전송으로 link가 바쁘다는 것을 알게된다면, 그 도착하고 있는 packet은 output buffer에서 기다려야만한다. 따라서, store-and-forward delays 외에도, packets은 output buffer queuing delays를 겪는다. 이러한 지연은 가변적이고, 네트워크의 혼잡 수준에 의존한다. 버퍼 공간의 양이 유한하기 때문에, 도착하는 패킷은 그 버퍼가 다른 패킷들이 전송을 기다리면서 완전히 꽉차있다는 것을 발견할지도 모른다. 이 경우에, packet loss가 발생할지도 모른다 - 도착하는 패킷 또는 이미 큐에 있는 패킷들 중 하나가 제거될 것이다.
- 예시에서 한 패킷은 삼차원의 slabs으로 나타내어진다. slab의 너비는 그 패킷에서의 비트의 수를 나타낸다.
- Packet forwarding은 컴퓨터 네트워크의 다른 종류에서 다른 방식들로 처리된다.
- Internet에서, 모든 end system은 IP address라고 불리는 한 주소를갖는다. 한 source end system이 destination end system으로 한 패킷을 보내길 원할 때, 그 source는 packet의 header에 destination의 IP 주소를 포함한다. postal addresses처럼, 이 주소는 hierarchical structure를 가진다. 한 패킷이 네트워크에 있는 한 라우터에 도착할 때, 그 라우터는 packet의 목적지 주소의 부분을 검사하고, 그 패킷을 adjacent router로 보낸다. 좀 더 구체적으로, 각 router는 destination addresses를(또는 그 목적지 주소의 부분들을) 그 router의 outbound links로 매핑하는 forwarding table을 가진다. 한 패킷이 router에 도착할 때, 그 라우터는 주소를 조사하고, 이 목적지 주소를 사용하여 적절한 outbound link를 찾기 위해 그것의 forwarding table을 검사한다. 그 router는 그러고나서 그 패킷을 이 outbound link로 보낸다. Internet은 forwwarding tables을 자동으로 설정하기 위해 사용되는 많은 특별한 routing protocols을 가지고 있다는 것에 주목해야 한다. routing protocol은 예를들어, 각 router에서 각 목적지로 가는 최단 경로를 결정할지도 모르고, 라우터에 있는 forwarding table를 설정하기 위해 최단 경로 결과를 사용할지도 모른다. (forwarding table의 상세한 설정은 Chatper 4에서 다뤄진다).
- links와 switches의 네트워크를 통해 data를 옮기는 두 가지 기본 접근법이 있다: circuit switching과 packet switching. 한 경로 (buffers, link transmission rate)를 따라서 end systems사이의 커뮤니케이션을 위해 제공하는 resources는 end systems사이의 communication session의 duration동안 보유된다. packet-switched networks에서, 이러한 resources들은 보유되지 않는다; session의 메세지들은 요구되는 resources를 사용한다. 결과적으로 communication link에 접근하기 위해 기다려 한다 (즉, queue한다). (비유 : 예약이 필요한 식당과, 예약이 필요없는 식당).
- 전통적인 telephone networks는 circuit-switched networks의 예제였다. 보내는 사람이 정보를 보낼 수 있기 전에, 그 네트워크는 발신자와 수신자 사이의 연결을 확립해야만 한다. 이것은 수신자와 발신자 사이의 경로에 swithches가 그 연결동안 connection state를 유지하는 bona fide connection이다. telephony 용어로, 이 연결은 circuit이라고 불린다.
- 한 link에 있는 circuit은 freuquency-division multiplexing(FDM)또는 time-division multiplexing(TDM) 둘 중 하나로 구현된다. FDM으로 한 link의 frequency가 link를 따라 확립된 연결들 사이에서 분할된다. 구체적으로, 그 link는 연결 기간동안 각 연결에 대해 frequency band를 확보한다. 전화 네트워크에서, 이 frequency band는일반적으로 4 kHZ의 width를 가진다. 그 band의 width는 놀랍지 않게도 bandwidth라고 불린다. TDM link에 대해, 시간은 고정된 duration의 프레임들로 나눠지고, 각 프레임은 time slots의 고정된 개수로 나눠진다. 그 네트워크가 link에 대해 한 연결을 확립했을 때, 그 네트워크는 이 연결에 대해 매 프레임에서 한 time slot을 확보한다. 이러한 slots들은 그 연결의 단일 사용을 위해 확보되고, 한 time slot이 연결의 데이터를 전송하기 위해 (매 프레임마다) 이용가능하다.
- Packet Switching 옹호자들은 Circuit Switching이 사용되지 않을 때 idle한다고 낭비된다고 지적한다. Circuit Switching 옹호자들은 packet switching이 실시간 서비스에 적합하지 않는다고 주장한다 (예를들어, 전화 통화, 비디오 회의 통화). 왜냐하면 그것의 변수와 예상치 못한 end-to-enddlays들 때문에 (주로 가변적이고 예측할 수 없는 queueing delays). Packing switching 옹호자들은, packet switching이 circuit switching보다 더 좋은 transmission capacity의 sharing을 제공하고, circuit switching보다 구현하기에 더 효율적으고 덜 비싸다고 주장한다.
- access ISPs들은 그들 스스로 상호 연결되어야 한다. 이것은 network of networks를 생성하여 처리된다. 이 문장을 이해하는 것이 Internet을 이해하는 열쇠이다. 몇년 간, Internet을 형성하는 the network of networks는 매우 복잡한 구조로 진화했다. 이 진화의 대부분은 성능에 대한 고려라기 보다는 경제학과 국가적 정책에 의해 주도된다. 중대한 목적은 모든 end systems이 서로에게 패킷을 보낼 수 있도록 access ISPs를 상호 연결시키는 것이라고 기억해라.
- 우리의 첫 번째 네트워크 구조인 Network Structure 1은 그 access ISPs의 모든 것을 single global transit ISP로 상호연결한다. 우리의 (상상의) global transit ISP는 전세계로 확장될 뿐만아니라, access ISPs의 수십만개의 각각에 가까운 적어도 한 개의 라우터들을 가지는 routers와 communication links의 한 network이다. 그래서 global transit ISP가 provider가 되고, access ISP가 customer가 된다.
- 그런데 다른 회사에서 그러한 global transit ISP를 구축하면서, 원래의 global transit ISP와 경쟁하면서, Network Structure 2를 이끌게 된다. 이것은 매우 많은 access ISPs와 여러 global transit ISPs로 구성된다. access ISPs는 확실히 Network Structure 1보다는 Network Structure 2를 선호한다. 왜냐하면 이제 가격과 서비스의 기능으로 경쟁하는 global transit providers사이에서 고를 수 있기 때문이다. 그러나, global transit ISPs는 그들 스스로 상호 ㅇ녀결되어야 한다는 것에 주의해라 : 만약 그렇지 않다면, 그 global transit providers중의 하나에 연결된 access ISPs는 다른 global transit providers에 연결된 access ISPs와 의사소통 할 수 없을 것이다.
- 여러 경쟁하는 tier-1 ISPs들이 있을 뿐만 아니라, 한 영역에서 경쟁하는 regional ISPs가 있을지도 모른다. 그러한 hierarchy에서, 각 access ISP는 그것이 연결된 regional ISP에 돈을 지불하고, 각 regional ISP는 그것이 연결된 tier-1 ISP에 지불한다. tier-1 ISPs는 hierarchy의 맨 위에 있기 때문에 어느 누구에도 지불하지 않는다.
- 중국의 예로보면, 각 도시에 access ISPs가 있고, 이것은 provincial ISPs에 연결된다. 그리고 그것은 차례로 national ISPs에 연결되고, 마침내 그것은 tier-1 ISPs에 연결된다. 우리는 이것을 multi-tier hierarchy라고 언급하고, 이것은 Network Structure 3로서 여전히 오늘날의 인터넷의 crude approximation이다.
- 오늘날의 인터넷과 거의 닮은 한 네트워크를 구성하기 위해, 우리는 points of presence(PoPs), multi-homing, peering, Internet exchange points(IXPs)를 hierarchical Network Structure 3에 추가해야 한다. PoPs는 bottom (access ISP) level를 제외한 hierarchy의 모든 levels에 존재한다. PoP는 provider의 네트워크에 있는 간단히 한 개 이상의 (같은 위치에 있는) routers들의 한 그룹이다. 거기에서 고객 ISPs는 그 provider ISP에 연결될 수 있다. 어떤 ISP (tier-1 ISPs를 제외하고) multi-home을 선택할지도 모르는데, 즉, 두 개 이상의 provider ISPs에 연결하기 위해서이다. 그래서 예를들어 한 access ISP는 두 개의 regional ISPs와 multi-home할지도 모르고, 그것은 두 개의 reigional ISPs와 multi-home할지도 모르고, 또한 그것이 한 tier-1 ISP와 multi-home할지도 모른다. 유사하게, regional ISP는 여러 tier-1 ISPs와 multi-home할지도 모른다. ISP가 multi-home할 때, 그것의 providers 중의 하나가 실패할지라도, 인터넷에 계속해서 패킷들을 주고받을 수 있다.
- customer ISP가 provider ISP에게 지불하는 양은 그것이 provider와 교환하는 traffic의 양을 반영한다. 이러한 비용을 줄이기 위해, hierarchy의 같은 level에 있는 가까운 ISPs의 한 쌍은 peer를 할 수 있다. 즉, 그들은 직접적으로 그들의 네트워크를 함께 연결 할 수 있고, 그들사이의 모든 트래픽을 upstream intermediaries를 통해서 하기 보다 직접적인 연결로 지나다니게 하기 위해서이다. 두 개의 ISPs가 peer를 할 때, 그것은 일반적으로 settlement-free인데, 즉 어떠한 ISP도 다른 이에게 지불하지 않는다는 것이다. 이전에도 말했듯이, tier-1 ISPs는 또한 서로 peer를 하고, settlement-free이다.
- 이러한 같은 유형을 따라서, 한 third-party company는 Internet Exchange Point(IXP)를 생성할 수 있다 (일반적으로 그것 자신의 switches를 가진 stand-alone building에서), 그리고 이것은 여러 ISPs가 함께 peer할 수 있는 meeting point이다. 우리는 이 생태계를 Network Structure 4라고 부른다 - access ISPs, regional ISPs, tier-1 ISPs, PoPs, multi-homing, peering, IXPs 로 구성되어 있다.
- Network Structure 5는 Network Structure 4의 위에 content provider networks를 추가하여 구성된다. 구글이 현재 그러한 것의 예시중 하나이다.
* Delay, Loss, and Throughput in Packet-Switched Networks
- 어떠한 데이터의 손실 없이 즉각적으로 우리가 원하는 만큼의 데이터를 옮기는 것이 인터넷 서비스들의 신성한 목표이다. 하지만 성취할 수 없기에, 컴퓨터 네트워크들은 반드시 end systems사이의 throughput(처리량, 전송될 수 있는 초당 데이터 량)을 제한하고, end systems 사이의 delays를 도입하고, 실제로 packets을 잃어버릴 수 있다. 한 편으로, 현실의 물리법칙이 delay와 loss뿐만 아니라 throughput을 제한하는 것은 불행하다. 반면에, 컴퓨터 네트워크가 이러한 제한을 가지고 있기 때문에, 그 문제들을 해결하려는 것을 둘러싸는 많은 매력적인 문제들이 있다.
- 한 packet이 경로를 따라 한 node (host or router)에서 차후의 노드 (host or router)로 이동할 때, 그 패킷은 그 경로를 따라서 있는 각 node에서 몇 가지 종류의 delays를 겪는다. 이러한 delays중의 가장 중요한 것들은 nodal processing delay, queuing delay, transmission delay, propagation delay이다. 이러한 delays들은 total nodal delay를 주기위해 축적된다. 검색, 웹브라우징, 이메일, 지도, 인스턴트 메세징, voice-over-IP와 같은 많은 인터넷 프로그램들의 성능은 크게 네트워크 지연에 의해 영향을 받는다. packet switching과 computer networks에 대해 깊은 이해를 얻기 위해서, 우리는 이러한 delays의 특성과 중요성을 이해해야만 한다.
- packet의 header를 조사하고, 그 packet을 어디로 향하게 할지를 결정하는데 요구되는 시간은 processing delay의 일부이다.. processing delay는 또한 upstream node에서 router A로 패킷의 비트들을 전송할 때 발생할 수 있는 bit-level errors를 체크하는데 필요한 시간과 같은 다른 요소들을 포함할 수 있다. 높은 속도의 routers들에서 processing delay는 일반적으로 microseconds이거나 더 낮다. 이 nodal processing 이후에, router는 router B로 가는 link에 선행하는 queue에 패킷을 보낸다.
- queue에서, packet이 link에 전송되기를 기다릴 때 queuing delay를 경험한다. 한 특정한 패킷의 queuing delay의 길이는 큐에 있는 미리 도착한 패킷들과 링크로 전송되기를 기다리는 패킷들의 수에 따라 달라진다. queuing delay는 실제로 microseconds에서 milliseconds가 될 수 있다.
- packets이 first-come-first-served 방식으로 전송된다는 것을 가정한다면, packet-switched networks에서 흔하듯이, 우리의 packet은 그것이 전송되기전에 도착했던 모든 패킷 이후에만 전송될 수 있다. transmission delay는 L/R이고, L은 packet의 bits길이이고, R은 bits/sec인 초당 비트 전송량이다. 단위는 bps이다. transmission delay는 실제로 microseconds에서 milliseconds 시간에 있다.
- 한 bit가 link에 넣어지기만 한다면, 그것은 router B로 전파될 필요가 있다. 그 link의 시작에서 router B까지 전파하는데 요구되는 시간이 propagation delay이다. 그 bit는 link의 propagation speed로 전파된다. propagation speed는 link의 physical medium에 의존한다 (즉, fiber optics, twisted-pair copper wire, 등등). 그리고 2 * 10^8 meters/sec ~ 3 * 10^8 meters/sec의 범위에 있다. 빛의 속도와 동일하거나 조금 작다. propagation delay는 propagation speed로 두 라우터 사이의 거리를 나눈 것이다.
- transmission/propagation delay의 차이는 작지만 중요하다. transmission delay는 router가 packet을 push하는데 요구되는 시간의 양이다; 그것은 packet의 길이와, link의 transmission rate의 기능이지만, 두 라우터 사이의 거리와 관련이 없다. 반면에 propagation delay는 한 라우터에서 다음으로 전파하는데 걸리는 시간이다; 그것은 두 라우터의 거리에 대한 기능이지만, packet의 길이와 link의 전송률과 관련이 없다.
- total nodal delay는 d_nodal = d_proc + d_queue + d_trans + d_prop 로 우저진다.
- nodal delay의 가장 복잡하고 흥미로운 component는 queuing delay, d_queue이다. 다른 세 개의 delays들과 다르게, queuing delay는 packet마다 변할 수 있다. queuing delay를 특징화할 때, 어떤 사람은 일반적으로 평균 queuing delay, queuing delay의 분산, queing delay가 어떤 정해진 값을 초과하는 확률 같은 통계적 수치를 사용한다. traffic이 queue에 도착하는 rate, link의 transmission rate, 그리고 도착하는 traffic의 특성(그 트래픽이 주기적으로 도착하는지 갑자기 도착하는지)에 따라 queing delay는 커지기도 하고 무의미해지기도 한다.
- a가 패킷이 큐에 도달하는 평균 비율이라고 하자 (a는 packets/sec 단위에 있다)R은 transmission rate이고, 즉, 그것은 bits가 queue 밖으로 밀어내지는 bits/sec 단위의 비율이고, 또한, 간단함을 위해서, 모든 패킷들이 L bits로 구성된다고 가정하자. 그러고나서 bits가 큐에 도착하는 평균 비율은 La bits/sec이다. 마지막으로, 그 큐가 매우 크다고 가정해서, 그것이 반드시 무한한 비트들을 보유할 수 있다고 하자. La/R인 traffic intensity는 queuing delay의 정도를 측정하는데 중요한 역할을 한다. 만약 La/R > 1보다 크다면, 그러면 비트가 큐에 도달하는 평균 비율이 그 비트가 큐에서 transmitte될 수 있는 비율을 초과한다. 이 좋지 않은 상황에서, 그 큐는 제한 없이 증가하는 경향이 있을 것이고, queuing delay는 무한에 도달할 것이다! 그러므로, traffic engineering에서 황금률 중의 하나는 : Design your system so that the traffic intensity is no greater than 1. 이다.
- La/R <= 1인 상황을 고려하면, 도착하는 traffic이 queueing delay에 영향을 끼치는 특징이 있다. 예를들어, 만약 패킷이 주기적으로 도착한다면, 즉, 한 패킷이 L/R seconds마다 도달한다면, 그러면 모든 패킷은 텅빈 큐에 도달할 것이고, 어떠한 queuing delay도 없을 것이다. 반면에 패킷들이 갑자기 도착하지만 주기적으로 한다면, 큰 평균 queuing delay가 있을 수 있다.
- traffic intensity가 1에 도달할 수록, average queuing delay는 급격히 증가한다. intensity에서의 작은 퍼센트 증가는 delay에서 더 큰 퍼센트 증가를 만들어낼 것이다.
- 현실에서, link에 선행하는 queue는 유한한 용량을 가진다. 비록 그 queuing capacity가 크게 router design과 cost에 의존할지라도. queue capacity가 유한하기 때문에, packet delays는 실제로 traffic intensity가 1에 도달할 때 무한에 접근하지 않는다. 대신에, 패킷은 꽉찬 큐를 도착해서 발견할 수 있다. 그러한 패킷이 저장할 공간이 없어서, 한 router는 그 packet을 떨어뜨릴(drop) 것이다; 즉, 그 packet은 손실(lost)될 것이다. end-system 관점에서, packet loss는 한 패킷이 network core에 전송되었지만, 결코 목적지에 있는 네트워크에 나타나지 않는 것 처럼 보일 것이다. lost packets의 파편들은 traffic intensity가 증가할 때 증가하게 된다. lost packet은 모든 데이터가 결국 source to destination으로 전송되도록 보장하기 위해 end-to-end 기반으로 재전송될지도 모른다.
- source host와 destination host 사이에 N - 1개의 routers가 있따고 가정하자. 네트워크가 혼잡하지 않는 순간에, 각 router와 source host에서 processing delay가 d_proc이라고 가정하고, 각 router와 source host에서 나가는 transmission rate가 R bits/sec 이라고 하자. 각 link의 propagation은 d_prop이다. 그 nodal delays는 end-to-end delay를 축적하고 준다. d_end-end = N(d_proc + d_trans + d_prop). 여기에서 d_trans = L/R이고, L은 packet size이다.
- delay와 packet loss외에도, computer networks에서 또 다른 중요한 성능 기준은 end-to-end throughput이다. throughput을 정의하기 위해서, 한 컴퓨터 네트워크위에서 호스트 A에서 호스트 B로 가는 한 큰 파일을 고려해보자. 이 전송은 예를들어 P2P file sharing system에서 한 peer에서 또 다른 것으로 가는 큰 비디오 클립일지도 모른다. 어떤 instant of time에서 instantaneous throughput은 Host B가 그 file을 받는 비율 (bits/sec)이다. 만약 그 파일이 F bits로 구성되고, 그 전송이 모든 Fbits를 받는데 Host B가 T seconds가 걸렸다면, 그러면 그 file transfer의 average throughput은 F/T bits/sec이다. Internet telephony같은 어떤 어플리케이션에 대해, 어떤 threshold위로 일관된게 instantaneous throughput 과 low delay를 갖는 것은 바람직하다. 파일 전송을 포함한 것들을 포함하여 다른 어플리케이션에 대해, delay는 중요하지 않지만, 가장 높은 가능한 throughput을 갖는 것은 바람직하다.
- 간단한 두 개의 link network가 있는 상황에서, throughput은 min{R_c, R_s}이고, 즉 그것은 bottleneck link의 transmission rate이다. 현재 우리는 store-and-forward와 processing delays, protocol issues들을 고려하고 있지 않다. 그래서 현대의 상황을 고려하면, Internet core는 매우 빠른 throughput을 제공하기 때문에, 오늘날 인터넷에서 throughput에 대한 제약 요인은 일반적으로 access network이다.
* Protocol Layers and Their Service Models
- Layered Architecture
- 각 layer는 그 layer내에서 어떤 행위를 수행하고 그 layer 바로 아래에 있는 layer의 서비스들을 사용하여 그것의 서비스를 제공한다.
- 네트워크 프로토콜의 design에 대한 구조를 제공하기 위해, 네트워크 설계자들은 프로토콜들을(그리고 그 프로토콜들을 구현하는 네트워크 하드웨어와 소프트웨어) layers에서 구성한다. 각 프로토콜은 그 layers들 중의 하나에 속한다. 우리는 다시 한 layer가 위에 있는 layer에 제공하는 services에 관심이 있다 - 소위 한 layer의 service model이다.
- protocol layer는 소프트웨어, 하드웨어, 또는 그 두 개의 결합으로 구현될 수 있다. HTTP와 SMTP같은 Application-layer protocols은 항상 end systems에서 소프트웨어에서 구현된다; transport-layer protocols도 그렇다. physical layers와 data link layers는 한 특정한 link에 대한 communication을 처리하는데 책임이 있기 때문에, 그것들은 일반적으로 주어진 link와 관련된 network interface card에서 구현된다. 그 네트워크 layer는 종종 하드웨어와 소프트웨어의 혼합된 구현이다.
- 다양한 레이어를 가진 프로토콜들은 protocol stack이라고 불려진다. Internet protocol stack은 5개의 layers로 구성된다 : physical, link, network, transport, and application layers.
- application layer는 network applications와 그것들의 application-layer protocols이 있는 곳이다. Internet의 application layer는 HTTP(웹 문서 요청과 전송에 대해 제공하는), SMTP(e-mail 메세지의 전송에 대해 제공는), FTP(두 개의 end systems 사이에 파일 전송에 대해 제공하는) 같은 많은 프로토콜들을 포함한다. application-layer protocol은 여러 end systems 사이에 분배되어 있고, 한 end system에서의 어플리케이션은 또 다른 end system에 있는 application과 정보의 packets을 교환하기 위해 그 프로토콜을 사용한다. 우리는 application layer에서 이 정보의 packet을 message라고 언급할 것이다.
- Internet의 transport layer는 application endpoints 사이에서 application-layer messages를 전송한다. Internet에서 두 개의 transport protocols이 있는데, TCP와 UDP이다. 그것들은 application-layer messages를 전송할 수 있다. TCP는 그것의 applications에 connection-oriented service를 제공한다. 이서비스는 목적지로 application-layer messages의 보증된 배달과 flow control(즉, sender/receiver speed matching)을 포함한다. TCP는 또한 긴 메세지를 더 짧은 segments로 분해하고, 네트워크가 혼잡할 때 그것의 transmission rate를 한 source가 줄이도록 하기 위해 congestion-control mechanism을 제공한다. UDP protocol은 그것의 프로그램에 connectionless service를 제공한다. 이것은 신뢰성, flow control, congestion control을 제공하지 않는 장식이 없는 서비스이다. 이 책에서, 우리는 transport-layer packet을 segment라고 말할 것이다.
- Internet의 Network Layer는 한 호스트에서 다른 호스트로 datagrams이라고 알려진 network-layer packets을 움직이는데 책임이 있다. 한 source host에서 그 Internet transport-layer protocol (TCP or UDP)은 network layer로 transport-layer segment와 목적지 주소를 전달한다. 목적지 주소가 있는 편지를 우체국 서비스에 주듯이. network layer는 그러고나서 그 segment를 목적지 host에 있는 transport layer에 그 segment를 배달하는 서비스를 제공한다. 그 Internet의 network layer는 그 유명한 IP Protocol을 포함하는데, 이것은 datagram에서의 fields를 정의할 뿐만 아니라, 그 end systems과 routers가 이 fields에 대해 어떻게 행동해야 할지를 정의한다. 오직 한 개의 IP protocol이 있고, network layer를 가진 모든 Internet components들은 IP protocol을 실행해야만 한다. 그 Internet의 network layer는 또한 datagrams가 sources와 destinations 사이에 거쳐야 할 routes를 결정하는 routing protocols을 포함한다. 그 Internet은 많은 routing protocols을 가지고 있다. network layer가 IP protocol과 수 많은 routing protocols를 포함할지라도, 그것은 종종 IP layer라고 간단히 언급된다. 이것은 IP가 그 Internet을 함께 묶는 접착제라는 사실을 반영한다.
- Internet의 network layer는 source와 destination 사이의 일련의 routers들을 통해 datagram을 보낸다. 한 노드(host or router)에서 그 route에 있는 다른 노드로 패킷을 움직이기 위해서, 그 network layer는 link layer의 서비스들에 의존한다. 특히, 각 노드에서, 그 network layer는 datagram을 link layer로 보낸다. 그리고 그 link layer는 그 datagram을 route에 따라 다음 노드로 옮긴다. 이 다음 노드에서, 그 link layer는 그 datagram을 그 network layer로 올려보낸다. link layer에 의해 제공되는 서비스들은 그 link에 대해 이용되는 특정한 link-layer protocol에 의존한다. link-layer protocols의 예시들은 Ethernet, WiFi, cable access network의 DOCSIS protocol을 포함한다. 이 책에서, 우리는 그 link-layer packets을 frames라고 언급할 것이다.
- 그 link layer의 일은 한 network element에서 인접한 network element로 전체 frames을 옮기는 것인 반면, physical layer는 한 노드에서 다음 노드로그 frame 내에서 개별 비트들을 옮기는 것이다. 이 layer에서 protocols들은 또 다시 link dependent이고, 더 link의 실제 전송 매체에 의존한다 (예를들어, twisted-pair copper wire, single-mode fiber optics). 예를들어, Ethernet은 많은 physical-layer protocols를 가진다: twisted-pair copper wire에 하나, coaxial cable에 또 다른 것. 등. 각 경우에 한 비트는 다른 방식으로 그 link를 가로질러 옮겨진다.
- Internet protocol stack은 유일한 protocol stack이 아니다. 1970년대 후반에, International Organization for Standardization (ISO)는 컴퓨터 네트워크가 7개의 layers로 구성되어야 한다고 제안했다. 그것은 Open Systems Interconnections (OSI) model로 불려진다. OSI 모델은 Internet protocols이될 protocols들이 초기단계에 있을 때 형성되었지만, 개발중이 많은 다른 프로토콜 집합 중의 하나였다; 사실, 원래의 OSI 모델 발명가들은 그것을 만들 때 Internet을 염두에 두지 않았다. 그럼에도 불구하고, 1970년대 후반에 시작하여, 많은 교육/대학 강의들이 ISO에서 7계층 모델에 대한 의무적이고 구성된 수업을 골랐었다. 네트워킹 교육에 대한 그것의 초기 영향에 의해, 7계층 모델은 어떤 네트워크 교재와 교육 수업에서 계속해서 서성인다.
- OSI reference model의 7개의 layers들은 : application layer, presentation layer, session layer, transport layer, network layer, data link layer, and physical layer. 이러한 layers들 중 5개의 기능은 그것들의 유사하게 이름지어진 Internet의 대응되는 것과 대강 같다. presentation layer의 역할은 의사소통하는 applications이 교환되는 data의 의미를 해석하도록 해주는 서비스를 제공한다. 이러한 서비스는 data compression과 data encryption 뿐만 아니라 data description를 포함한다. 그 session layer는 data exchange의 delimiting과 synchronization에 대해 제공한다. 그리고 checkpointing과 recovery scheme을 구성하는 수단을 포함한다.
- Internet이 OSI reference model에서 발견되는 두 개의 layers가 부족하다는 사실은 두 개의 흥미로운 질문을 제기한다 : 이러한 layers에의해 제공되는 서비스들은 중요하지 않는가? 한 application이 이러한 서비스들중의 하나를 필요하다면 어떨까? 이러한 질문들 둘 다에 대한 Internet의 답은 같다 - 그것은 application developer에 달려있다. 그것은 한 service가 중요한지, 그 service가 중요한지는 application developer에 달려있다. 만약 그 서비스가 중요하다면, 그 기능을 그 어플리케이션에 구성하는 것은 application developer에 달려있다.
- Encapsulation
- routers와 link-layer switches는 둘 다 packet switches이다. end systems과 유사하게, routers와 link-layer switches는 그들의 networking hardware와 software를 layers로 구성한다. 그러나 routers와 link-layer switches는 protocol stack에서 모든 layers들을 구현하지 않는다; 그들은 일반적으로 bottom layers만을 구현한다. link-layer switches는 layers 1과 2를 구현한다; routers는 layers 1부터 3까지 구현한다. Internet routers는 IP protocol을 구현할 수 있다 (layer 3 protocol), 반면에 link-layer switches는 그렇지 않다.
- 그림 1.24는 또한 encapsulation의 중요한 개념을 보여준다. sending host에서, application-layer message는 (그림 1.24의 M) transport layer로 보내진다. 가장 간단한 경우에, 그 transport layer는 그 메세지를 취하고, receiver-side transport layer에서 사용될 부가적인 정보를 더한다 (소위 transport-layer header information, 그림 1.24의 H_t). application-layer message와 transport-layer header information은 함께 transport-layer segment를 구성한다. 그 transport-layer segment는 따라서 그 application-layer message를 캡슐화한다. 부가 정보는 receiver-side transport layer가 그 message를 적절한 application까지 보내도록 하는 정보와, 그 receiver가 메세지에 있는비트들이 route에서 변경되었는지를 결정하도록 하는 error-detection bits를 포함할지도 모른다. 그러고나서 그 transport layer는 그 segment를 network layer로 넘긴다. 그 레이어는 network-layer datagram을 만드는 source and destination end system addresses 같은 network-layer header information (그림 1.24에서 H_n)을 추가한다. 그러고나서, 그 datagram은 link layer에 넘겨진다. 그 레이어는 물론 그것 자신의 link-layer header information을 추가하고, link-layer frame을 만든다. 따라서, 각 layer에서 한 패킷은 두 개 유형의 fileds를 갖는다 : header fields와 payload field. 그 payload는 일반적으로 위에 있는 레이어의 한 packet이다.
- 비유는 한 사무실에서 다른 사무실로 사무실 간 메모를 보내는 것이다. 한 branch office에있는 Alice가 또 다른 branch office에 있는 Bob에게 메모를 보내길 원한다. 그 memo는 application-layer message와 비슷하다. Alice는 interoffice envelop에 봉투의 앞에 Bob의 이름과 부서를 써서 메모를 넣는다. 그 interoffice envelop는 transport-layer segment와 유사하다 - 그것은 header information (Bob의 이름과 부서 번호)를 포함하고 그것은 application-layer message (memo)를 캡슐화 한다. 그 보내는 branch-office mailroom은 interoffice envelope를 받았을 때, 그것은 또 다른 envelope 안에 interoffice envelope를 넣는다. 그 또 다른 봉투는 public postal servie를 통해서 보내는 것에 적절한다. 그 보내는 mailroom은 또한 postal envelope에 보내는 곳과 받는 branch offices를 쓴다. 여기에, postal envelope는 datagram과 유사하다 - 그것은 transport-layer segment (interoffice envelope)를 캡슐화하고, 그 segment는 원래 메세지 (memo)를 캡슐화 핟나. 그 postal service는 받는 branch office mailroom에 postal envelope를 배달한다. 거기에서 de-encapsulation의 과정이 시작된다. 그mailroom은 interoffice memo를 추출하고, 그것을 Bob에 보낸다. 마지막으로 Bob은 그 봉투를 열고 메모를 빼낸다.
- 캡슐화 과정은 위에서 설명된 것 보다 더 복잡할 수 있다. 예를들어, 한 큰 메세지는 여러개의 transport-layer segments로 나눠질지도 모른다 (그리고 그것은 그 자체로 각각 여러 network-layer datagrams으로 나눠질지도 모른다). receiving end에서, 그러한 segment는 그러고나서 그것을 구성하는 datagrams으로부터 재구성되어야 한다.
* Networks Under Attack
- Internet은 오늘날 크고 작은 회사, 대학, 정부 기관을 포함하는 많은 기관에 중요한 임무가 되었다. 많은 개인들은 또한 그들의 전문적, 사회적, 개인적 활동의 대부분을 위해 Internet에 의존한다. 그러나 모든 이러한 유용성과 즐거움 뒤에, 어두운 면이 있다. "bad guys"가 우리의 Internet으로 연결된 computers들에 피해를 입히고, 우리의 privacy를 위반하고, 우리가 의존하는 인터넷 서비스들을 작동 못하게 하여 우리의 일상 삼을 파괴하려고 한다.
- 네트워크 보안 분야는 그 bad guys가 어떻게 computer networks를 공격할 수 있고, 컴퓨터 네트워크에서 전문가가 될 우리가 어떻게 그러한 공격에 대해 네트워크를 방어할 수 있고, 또는 처음에 그러한 공격에 면역이 된 새로운 아키텍쳐를 설계하는 것에 대한 것이다.
- bad guys는 Internet을 통해 너의 host에 malware를 넣을 수 있다. 그래서 우리의 devices를 감염시킬 수 있다. 오늘날의 malware 대부분은 self-replicating이다: 그것이 한 host를 감염시키기만 한다면, 그것은 그 Internet을 토해 다른 호스트로 들어가는 입구를 찾는다. 그리고 그 새롭게 감염된 호스트로부터, 그것은 좀 더 많은 호스트들로 가는 entry를 찾는다. Malware는 virus or worm의 형태로 퍼질 수 있다. Viruses는 사용자의 장치를 감염시키는 사용자 상호작용의 형태를 요구하는 malware이다. Worms는 어떠한 explicit user interaction 없이 한 device에 들어갈 수 있는 malware이다.
- bad guys는 servers와 network infrastructure를 공격할 수 있다. 또 다른 보안 위협의 넓은 부류는 denial-of-service (DoS) attacks이다. Dos attack은 network, host 또는 다른 infrastructure의 other piece를 legitimate users에의해 사용할 수 없게만든다. 웹 서버, 이메일 서버, DNS 서버, 기관 네트워크 모두 DoS 공격의 대상이 될 수 있다. Internet DoS 공격은 매우 흔하다. 대부분의 Internet DoS 공격은 세 분류 중 하나에 들어간다:
- Vulnerability attack : 이것은 취약한 어플리케이션 또는 타겟 호스트에서 작동하는 운영체제에 잘 만들어진 메세지를 보내는 것을 포함한다. 만약 올바른 순서의 패킷이 취약한 어플리케이션 또는 운영체제에 보내진다면, 그 서비스는 멈출 수 있거나, 그 호스트는 crash될 수 있다.
- Bandwidth flooding : 공격자는 타겟 호스트에 매우 많은 패킷들을 보낸다 - 그래서 그 타겟의 access link가 막히게 되는 많은 패킷들을 보낸다. 그리고 이것은 그 legitimate 패킷들이 서버에 도달하는 것을 막는다.
- Connection flooding : 그 공격자는 많은 half-open 또는 fully open TCP 연결을 타겟 호스트에서 구성한다. 그 호스트는 이러한 가짜 연결에 교착 상태에 빠져서, legitimate connections을 받아들이는 것을 멈춘다.
- bad guys는 packets을 sniff할수 있다. wireless transmitter 근처에 passive receiver를 두어서, 그 receiver는 전송된 모든 패킷의 복사본을 얻을 수 있다. 이러한 패킷들은 패스워드, social secuirty numbers,거래 비밀, 개인 메세지를 포함하는 민감한 정보의 모든 종류를 포함할 수 있다. 날아다니는 모든 패킷의 복사본을 기록하는 passive receiver는 packet sniffer라고 불려진다. Sniffers는 wired environmetns에서도 또한 이용될 수 있다. 많은 Ethernet LANs에서 처럼, packet sniffer는 그 LAN을 통해 보내진 broadcast packets의 복사본을 얻을 수 있다. packet sniffers는 passive이기 때문에 -즉, 그것들이 packets을 channel에 넣지 않는다 - 그것들을 탐지하기에 어렵다. 그래서 우리가 패킷들을 wireless channel에 보낼 때, 우리는 어떤 bad guy가 우리 패킷들의 복사본을 기록하고 있을지도 모른다는 가능성을 받아들여야만 한다. 너가 추측하듯이, packet sniffing에 대한 가장 좋은 방어는 cryptography이다.
- bad guys는 너가 신뢰하는 사람으로 가장할 수 있다. packets을 잘못된 source address를 가진 Internet으로 넣는 능력은 IP spoofing으로 알려져 있고, 한 사용자가 다른 사용자인것 처럼 가장할 수 있는 많은 방법들 중 하나이다. 이 문제를 해결하기위해 우리는 end-point authentication이 필요하다, 즉, 우리가 한 메세지가 우리가 생각한 곳에서 온지를 확신을 가지고 결정해도록 하는 기제이다.
* History of Computer Networking and the Internet
- The Development of Packet Swithching : 1961-1972
- 컴퓨터 네트워킹 분야와 오늘날의 인터넷은 1960년대 초반 시절에 시작했다. 그 때는, telephone network가 세계의 주된 통신 네트워크였다. telephone network는 정보를 보내기 위해 circuit switching을 쓴다. 그리고 60년대에 초반에 컴퓨터의 증가되는 중요성과, timeshared 컴퓨터들의 출현으로, 컴퓨터들을 지리적으로 분산된 사용자 사이에서 공유될 수 있도록 하는 것을 고려하는 것이 당연했다. 1969년 노동절에, 첫 번째 packet switch가 UCLA에 Kleinrock의 감독하에 설치되었고, 세 개의 추가 packet switches가 Stanford Research Institute(SRI), UC Santa Barbara, Utah 대학에 그 이후에 설치되 었다.
- 1972년 즈음에, ARPAnet은 대략 15개의 노드들로 커졌고, 그것의 첫 번째 공공 시연을 받았다. ARPAnet end systems 사이의 첫 번째 host-to-host protocol인network-control protocol(NCP)가 완성되었었다. end-to-end protocol이 이용가능해지고, applications는 이제 쓰여질 수 있었다. Ray Tomlinson이 1972년에 첫 번째 e-mail 프로그램을 썼었다.
- Proprietary Networks and Internetworking : 1972-1980
- 초기 ARPAnet은 단일의 폐쇄된 네트워크 였다. 네트워크는 개수가 커지고 있었다. 완벽한 hindsight와 함께, 우리는 네트워크들을 함께 연결하는 encompassing architecture를 개발할 시간이 되었다는 것을 볼 수 있다. 네트워크들을 상호 연결하는 일을 시작한 것은, a network of networks를 만들어, Vinton Cerf와 Robert Kahn에 의해 되었다. internetting이라는 용어가 이 작업을 묘사하기 위해 만들어졌다.
- 이러한 아키텍쳐의 원리들은 TCP에서 구체화 되었다. 그러나, TCP의 초기 버전들은 꽤 오늘날의 TCP와 달랐다. TCP의 초기 버전은 신뢰할만한 in-sequence 데이터 전송을 forwarding functions과 (오늘날 IP에 의해서 수행되는 것) 함께 end-system retransmission(오늘날의 TCP의 일부)을 통해 결합했다. unreliable, non-flow-controlle, applications를 위한 packetized voice같은 end-to-end transport service가 결합된 TCP로 하는 초기 실험은 TCP에서 IP를 분리하는 것을 이끌었고, UDP protocol의 개발을 이끌었다. 우리가 오늘날보는 세 개의 주된 Internet protocols들 - TCP, UDP, and IP -는 개념적으로 1970년대 말에 자리잡혔다.
- Norman Abramson은 하와이 섬에서 여러 원격 장소가 서로 의사소통 하기도록 하는 packet-based radio network인 ALOHAnet을 개발중이였다. 그것은 첫 번째 multiple-access protocol이였고, 지리적으로 분산된 사용자들이 single broadcast communication medium을 (radio frequency)공유하도록 했다. Metcalfe와 BOggs는 Eternet protocol을 wire-based shared broadcast networks를 위해 개발할때, Abramson의 multiple-access protocol 작업을 기반으로 했다. 흥미롭게도, Metcalfe와 Boggs의 Ethernet protocol은 여러 PCs, printers, 그리고 공유 디스크들을 연결하려는 필요에 의해 동기부여 받았다. Metcalfe와 Boggs가 PC가 보급되기 전에, 오늘날의 PC LANs의 기초를 쌓았다.
- A Proliferation of Networks: 1980 - 1990
- 1980년 대는 엄청난 성장이 이루어지는 시기였다. 대부분의 성장은 대학을을 함께 연결하려는 컴퓨터 네트워크를 만들려는 노력에 기인했다. 1983년 1월 1일, TCP/IP는 ARPAnet에 대한 새로운 표준 host protocol로서 공식적으로 사용되었었다 (NCP protocol을대체하고). 그 NCP에서 TCP/IP로의 전환은 flag day event이다 -모든 hosts들은 그 날에 대해 TCP/IP로 전송되는 것이 요구된다. 1980년대 후반에, 중요한 확장이 TCP에 만들어졌는데, host-based congestion control을 구현하기 위해서이다. human-readable Internet name(예를들어, gaia.cs.umass.edu)과 그것의 32-bit IP 주소 사이에서 매핑하기 위해 사용되는 DNS 또한 개발되었다.
- ARPAnet의 (대부분 US의 노력이였다) 이 개발과 병행하여, 1980년대 초반에, 프랑스는 data networking을 모든 사람의 집에 옮기는 야망있는 프로젝트인 Minitel project를 시작했다.
- The Internet Explosion : The 1990s
- 1990년대는 지속된 진화와 곧 도착할 인터넷 상업화를 상징하는 많은 사건들이 있었다. 1990년대 주된 사건은 World Wide Web Application의 출현이였다. 그것은 Internet을 전 세계의 수백만 사람들의 집과 사업에 가져왔었다. 그 Web은 우리가 오늘날 당연시 여기는 수백개의 새로운 어플리케이션의 활성화하고 이용가능하는 한플랫폼으로서 역학을 했다. 예를들어 구글이나 Bing같은 검색, Internet commer(아마존, eBay) 그리고 소셜 네트워크(페이스북)
- Web은 1989년 19991년 사이에 CERN에서 Tim Berners-Lee에 의해 개발되었다. 그것은 1940년대의 Vannevar Bush의 초기 작업에 기원이 있는 아이디어에 기반을 둔다. 그리고 1960년대 이후의 Ted Neslon에 의해도 작업에 되었다. Berners-Lee와 그의 동료들은 HTML의 초기 버전, HTTP, Web server, browser를 개발했었다 - 웹의 주된 네 개의 컴포넌트들이다. Netscape - > Microsoft.
- 1990년대 두 번째 절반은 Internet에 대한 엄청난 성장과 혁신의 시간이였다. 대기업들과 수천의 스타트업들이 인터넷 제품과 서비스들을 만들었다.
- The New Millennium
- 새로운 천년이 시작한 이후로, 우리는 집에 broadband Internet access의 공격적인 이용을 보았다. 뿐만 아니라, cable modems과 DSL 뿐만아니라 fiber to the home. 이 빠른 속도 Internet access는 vieo applications의 부유함을 위한 무대를 만들었다.
- high-speed public WiFi networks와 3G와 4G cellular telephony networks를 통한 medium-speed Internet access의 증가하는 ubiquity는 끊임없이 연결되는 것을 가능하게 했다. 그 뿐만 아니라 새로운 위치 기반 어플리케이션을 활성화 시켰다.
- 이제 많은 Internet commerce 회사들은 "cloud"에 그들의 어플리케이션을 작동시킨다 - Amazon의 EC2, 구글 어플리케이션 엔진, 마이크로소프트의 Azure 같은. 많은 회사와 대학들은 또한 그들의 인터넷 어플리케이션 (이멜과 웹호스팅)을 cloud로 옮겼다. 클라우드 회사들은 applications scalable computing과 storage environments를제공할 뿐만 아니라, 그들의 high-performance private networks에 대한 implicit access를 applications에 제공한다.
Road-Mapping This Book
1. Computer Networks and the Internet
2. Application Layer
3. Transport Layer
4. Network Layer
5. Link Layer and Local Area Networks
6. Wireless and Mobile Networks
7. Multimedia Networking
8. Security in Computer Networks
9. Network Management
댓글 없음:
댓글 쓰기