본문 바로가기
CS/Computer Networking

[Computer Networking] 3. Chapter 1 : Roadmap

2021. 7. 19.
반응형

Chapter 1

  1. network(Internet을 바탕으로 한 network)
  2. protocol

 

delay, loss, throughput

어떤 packet이 노드에 도착하면, 노드는 processing함.

  1. check bit errors
  2. determine output link

nodal processing delay는 일반적으로 <msec (고정적)

queueing delay : outgoing link로 실려 나갈 수 있는 queue buffer에서 기다리는 시간. node의 congestion 정도에 따라 달라짐. (가변적)

transmission delay : outgoing link에 실릴 차례가 되었을 때, 패킷을 link에 밀어넣는 데 걸리는 시간. 패킷의 크기와 link의 bandwidth에 의해 결정됨. L (packet length (bits)) / R (link bandwidth (bps)). 패킷의 크기는 거의 일정하고, bandwidth이 이 노드에서는 일정하기 때문에 transmission delay는 거의 일정함.

propagation delay : bit가 링크에 실렸다고 다음 번 노드에 바로 전달되지 않음. transmission link를 travel해서 signal이 전달돼야 함. propagate 돼야 함. link의 길이 / link상에서 electronic signal이 전달되는 속도. 일반적으로 electronic signal이 guided medium을 통해서 전파되는 속도는 2x10$^8$ m/sec

한 node를 통과하기 위해서 packet은 processing → outgoing link 결정 → queue에서 기다림 → transmit  propagate

이 중에서 queueing delay만 가변적

 

queueing delay가 발생하는 이유 : outgoing link로 뽑아내는 속도보다 더 빠른 속도로 traffic이 유입되기 때문에 buffer에 packet들이 쌓여 buffer에서 대기하는 queueing delay 발생.

네트워크에서는 data를 traffic으로 얘기함

R = link bandwidth (bps)

L = packet length (bits)

a = average packet arrival rate

단위시간당 node에 유입되는 traffic의 양 = L * a

traffic intensity = L * a / R

La = R = 1 : 유입되는 속도 = 뽑아내는 속도

traffic intensity > 1 : queue의 길이가 무한정으로 늘어남

traffic intensity ~ 0 (0에 가까움) : traffic 유입 속도 <<< 뽑아내는 속도

traffic intensity가 0.7이상 되면 queueing delay가 무한대에 가깝게 급격하게 증가하는 경향을 보이는 이유 ⇒ average queueing delay는 단위 시간당 평균적인 수치임. 즉 경우에 따라서는 La >> R일 수 있음. 이럴 때 잠시 동안은 queue에 패킷이 쌓여 delay가 크게 늘어날 수 있음

 

Packet loss

queue의 크기는 finite

queue가 꽉 찼을 때 패킷이 도착하면 버려야 함 = packet loss

잃어버린 패킷을 재전송해야 함 → 사용자 입장에서 딜레이 길어짐, 네트워크 입장에서는 리소스 낭비

 

Throughput

throughput = 단위 시간당 처리량

네트워크에서는 = 단위 시간당 source로부터 destination까지 배달한 traffic의 양

average end-end throughput은 source - destination 사이에 연결된 link들 중 bottleneck link(= 가장 작은 capacity인 link = 가장 대역폭이 작은 link)에 의해 결정됨

packet switching network에서는 패킷 하나를 다 받을 때까지는 다음 패킷을 전송 X, 한 패킷에 대해서는 파이프라이닝을 하지 않지만 첫 번째 패킷이 가고 있는 동안 두 번째 패킷은 이쪽으로 오고 있을 수 있음. → 병렬 처리에서 본 것처럼 pipelining이 이루어질 수 있음

 

Throughput: Internet scenario

그림에서 파란 호수 = internet core

R이라는 link를 지나는 connection이 10개라면 각 connection은 R/10만큼 차지

일반적으로 인터넷에서 bottleneck이 되는 곳은 Rs, Rc

network core는 매우 capacity 큼, 일반적으로 edge 쪽이 bottleneck

 

1.5 Protocol

Why layering?

프로토콜은 레이어링 구조로 되어 있음, 매우 방대하고 복잡한 시스템이기 때문

프로토콜을 layering으로 정의하면 좋은 점도 있고 나쁜 점도 있음

좋은 점 : 복잡한 시스템의 각 piece를 identification하고 관계를 정의하기 용이함, 시스템을 modularization해서 구현하면 maintenance와 update가 용이함(프로그램을 function으로 구현하듯이)

나쁜 점 : 각 layer는 고유 목적이 있음, 고유 목적때문에 기능을 실행하게 되는데, 기능 간에 중복이 있을 수 있음. ex) 한 layer는 source에서 destination까지 체크, 다른 layer는 한 혹? 훅? 잘 이동했는지 체크하면 체크 범위가 중복됨

한 layer가 다른 layer에서만 알려지는 정보를 필요로 할 수 있음, 엄격하게 layer로 구분해두면 두 layer 간에 communication이 있어야만 다른 layer에서 발생한 정보를 가져올 수 있음 = overhead가 발생할 수 있음

 

Internet protocol stack

인터넷의 모든 네트워크 프로토콜은 계층구조로 되어 있다

인터넷은 5개의 프로토콜 영역 layer로 구성되어 있음

application, transport, network, link, physical

application : 네트워크 어플리케이션을 지원함. ex) HTTP라는 프로토콜이 web 어플리케이션을 지원. 이메일 - SMTP, 파일 transfer - FTP.

application 계층 프로토콜은 각 웹 어플리케이션마다 지원하기 위한 프로토콜이 있다. 유저 어플리케이션 프로그램에서 발생시킨 데이터를 encapsulation해서 메시지로 만드는 역할

transport : source process to destination process data transfer

source host의 source process가 만들어낸 메시지를 destination host에 있는 destination process로 전달

destination에 제대로 도착했는지 확인하기 위해서, application이 보낸 메시지에 header를 붙여서 segment라는 유닛을 만듦

process to process delivery 이루어지려면 먼저 host to host delivery 이루어져야 함 → transport 계층은 host to host delivery를 network 계층에 부탁함

network : 목적 - source host to destination host delivery

network 계층 가진 peer들끼리 협력해서 source host에서 destination host까지 잘 배달하는 것

host to host delivery 제대로 하기 위해서 header를 붙여서 데이터그램 만듦

routing을 통해서 길찾기를 함. host to host delivery를 위해서는 혹 바이 혹?으로 네트워크 노드를 거쳐가야 함. 한 혹? 건너서 전달하는 것을 link 계층에 부탁함

link : data transfer between neighboring network elements

데이터그램을 받아서 한 혹?을 제대로 건너가기 위해 header를 붙이고 frame을 만듦

한 혹?을 건너가기 위해서 physical medium에 bit를 밀어 넣음

physical : bits "on the wire"

 

Encapsulation

router에는 network 계층까지, switch는 link 계층까지 있음

이유 - network application은 end system에서만 실행됨

transport는 end to end process delivery이므로 router나 switch에 X

network는 다음에 어디로 보낼지 결정해야 하므로 router도 가짐

switch는 일반적으로 general한 길찾기 기능을 가지고 있지 X (network 계층 X이므로)

 

link에서 만든 frame을 physical 계층으로 보내면 switch의 physical 계층이 받음

받은 frame 그대로 복구해서 switch의 link 계층으로 올림

한 혹?을 건너가게 하기 위해서 frame을 만들어 보냄

링크마다 frame이 다르기 때문

switch의 link 계층이 physical한테 어떤 링크로 데이터를 보내라고 부탁함 → router의 physical 계층이 받음

route의 physical 계층이 받은 frame에 속한 bit를 다 모아서 frame을 복구해서 link 계층으로 올림 → link 계층에서 switch의 link 계층이 붙였던 header를 보고 한 혹?을 제대로 건넜는지 확인한 다음 header를 떼고 network 계층으로 올림 → source의 network 계층에서 만들었던 header를 보고 다음 혹? 어디로 가야 하는지 결정한 다음 떼고 자기의 header를 붙이고 내려 보냄 → link 계층에서 또 header 붙여서 내려 보냄 → destination physical 계층에서 바로 전 혹?인 router에서 만들었던 frame 복구 → router의 link 계층에서 붙였던 header 보고 한 혹? 잘 건너온 것 확인하고 header 떼고 올려 보냄 → network 계층에서 router에서 보낸 데이터그램에서 header 떼고, 목적지까지 제대로 찾아왔으니 transport로 올려 보냄 → source에서 만든 헤더 떼고 application 레이어로 올려 보냄

 

PDU (protocol data unit) = 각 프로토콜의 계층에서 만들어 내는 데이터 유닛

application 계층에서 만든 PDU - message

transport - segment

network - datagram

link - frame

 

Network security

프로토콜의 각 계층에 보안 메커니즘이 추가돼야 함

인터넷이 처음 만들어졌을 당시에는, 인터넷은 서로에 대해서 신뢰하는 과학자들 간에 데이터를 주고받기 위한 네트워크였다

하지만 90년대 이후로 굉장히 많은, 신원을 알 수 없는 사람들이 인터넷을 사용하게 됨

original 프로토콜 디자인에는 security X

지금은 security 첨가할 수 있어야.

  1. 공격의 종류가 어떤 것인지 identify
  2. 어떻게 defend 할지
  3. 원천적으로 어떤 공격을 immune하는 architecture를 design

 

Bad guys: put malware into hosts via Internet

malware : 컴퓨터 내에 존재하는 악성코드 총칭

virus는 activated by receiving/executing

worm은 받기만 하면 저절로 구동되고 전파됨

spyware : keystrokes, 웹사이트 방문한 기록을 collection site에 업로드

botnet : spam or DDoS로 활용되는 오염된 컴퓨터들의 집합

 

Bad guys: attack server, network infrastructure

Denial of Servie (DoS) : 서버에 쓸모 없는 traffic 발생시켜서 서버가 실질적인 사용자들에게 응대할 수 없게 만드는 공격

  1. target 지정
  2. 타겟 주변으로 malware 보내서 botnet으로 만듦
  3. botnet에서 target으로 packet 보냄

packet "sniffing" : WiFi 등 broadcast media에서 발생

broadcast media는 media에 여러 호스트들이 attached 돼 있고 이 media를 sharing 하는 것

ex) WiFi : network point를 공유하는 여러 host들이 wifi 모듈을 공유

broadcast media는 attached된 호스트들이 지나가는 모든 traffic을 볼 수 있음

네트워크 연결을 위해서는 NIC (network interface card)가 end system에 꽂힘

NIC에는 물리적으로 고유한 address가 있음

link 계층에서는 받은 frame의 목적지 주소가 NIC 주소 혹은 broadcast address와 일치하면 위 계층으로 올려 보내고 일치하지 않으면 frame을 drop시켜서 위 계층으로 올려 보내지 X

NIC를 promiscuous 모드로 setting할 수 있음 - 관리 차원에서 지나가는 모든 frame을 조사할 필요가 있는 경우에 setting → 나를 destination으로 하는 frame이 아니더라도 위 계층으로 올림

ex) 은행으로 실어 보내는 password 등을 다 볼 수 있게 됨

IP spoofing : 네트워크에 연결된 호스트가 다른 호스트인 척 하는 것

자기 자신이 아닌 다른 source address를 써서 보냄

 

1.7 Internet history

1961 : Kleinrock - queueing theory

1964 : Baran - packet-switching

1969 : first ARPAnet 최초의 인터넷 알파넷

1972 : NCP 알파넷의 프로토콜, 최초의 application program인 e-mail이 등장

 

1970 : ALOHAnet satellite network in Hawaii

1976 : Xerox PARC 사에서 Ethernet 만듦

late70's : DECnet, SNA, XNA

1972-1980 : 이처럼 다양한 네트워크들이 만들어지고, 이들을 연결하는 Internetworking 개념이 만들어짐

Cerf and Kahn's internetworking principles

(현대 internet architecture를 정의함)

  • minimalism, autonomy - 서로 다른 네트워크를 연결할 때 변화는 최소화해야 하고, 각 네트워크 간에 독립성 있어야 함
  • best effort service model - 네트워크 간 전달하는 것은 최선을 다해야 함, guarantee는 없다
  • stateless routers : router에서 어떤 packet이 지나갔는지 기록 안 남김
  • decentralized control : 네트워크 상에서는 어떤 head가 중심이 돼서 제어하는 것 없다

 

1980-1990 : new protocols

national networks 등장 - NSFnet이 ARPAnet 대체, 10만개의 호스트 (NSFnet이 각 대학 연구소들을 연결하는 인터넷 규모)

1983 : TCP/IP - 최초의 프로토콜인 NCP를 대체함

1982: smtp - 개선된 이메일 프로토콜

1983 : DNA

1985 : ftp

1988 : TCP congestion control하는 알고리즘

 

early 1990's : ARPAnet 없어짐

1991 : NSFnet이 ARPAnet을 완전히 대체, commercial use에 대한 제약을 없앰

early 1990s : WEB

HTTP 웹 어플리케이션 프로토콜 등장

late 1990's : commercialization of the Web

late 1990's - 2000's

killer apps : instant messaging, P2P file sharing

호스트 5천만개, 사용자 1억명

 

2005-present

social networks

Google, Microsoft create their own networks

cloud 등장

broadband wireless access

smartphones and tablets 다양한 end system들이 인터넷에 연결됨

반응형

댓글