'공부/네트워크'에 해당되는 글 4건

  1. 2011.08.18 Link layer and LANs 1
  2. 2011.08.15 Network Layer
  3. 2011.07.28 Transport Layer
  4. 2011.07.23 Application layer
공부/네트워크2011. 8. 18. 20:35


node(host, router)간 링크를 통한 전송.
링크들이 가지고 있는 프로토콜이 다르다. 이더넷으로 전송되다가 무선랜프로토콜으로 전송되는 경우.
layer 2 패킷은 frame이라고 부른다. 데이터그램에 헤더랑 트레일러(trailer)를 붙인 것.
맥 어드레스 사용.
reliable data transfer 제공,
flow control 제공.
에러 검출/복구 제공. 신호감쇠나 소음에 의해 에러가 발생할 때.
half duplex, full duplex
network interface card(NIC, 랜카드)에서 링크레이어 구현

Error detection
Datagram 끝에  EDC(Error Detection and Correction bits)를 붙인다.
parity checking: 패킷 전체 1의 갯수가 홀(또는 짝)수가 되도록 맞춰주는 것.

인터넷 체크섬
트랜스포트 레이어 에러 체크
패킷을 16-bit로 나눠서 그것들의 합을 같이 보내고 받는 쪽에서도 계산해서 일치하면 에러가 없는 것.(하지만 있을 수도)

CRC (Cyclic Redundancy Check)
나머지 값을 패킷뒤에 붙어서 리시버쪽에서 어떤 값(센더와 리시버 둘 다 알고있는 것)으로 나눴을 때 나머지가 0이 아니면 에러 발생.
 
두가지 종류의 링크
1) point to point. 이더넷 스위치와 호스트 사이의 링크.
2) broadcast. 무선랜.

Multiple Access protocols
브로드캐스트 채널을 공유.
여러개 동시 전송이 있을 때 충돌 가능성.
multiple access protocol은 충돌이 발생하지 않게금 노드들이 패킷을 전송할 수 있게 조정하는 프로토콜.
control 채널이 따로 없다. data가 전송되는 채널과 같이 쓴다.

맥 프로토콜
세가지 분류
1) 채널 파티셔닝 - 채널을 작은 단위로 나눠서 각 단위를 노드에 배정(시간, 주파수, 코드)
2) 렌덤 엑세스 - 채널이 분할되지 않고 충돌을 허용. 충돌발생했을 때 복구 방법 제공.
3) Taking turns - 노드들이 돌아가면서 채널을 사용.

1) 채널 파티셔닝
TDMA (Time Division Multiple Access)
노드들이 라운드마다 한 패킷을 보낼 정도의 time slot를 얻는다.
 
FDMA (Frequency Division Multiple Access)
주파수로 채널이 분할.
각 노드는 고정 주파수를 배정 받는다. 

2) Random Access Protocols
노드가 보낼 패킷이 있으면 한 채널 다 사용해서 보낸다.
여러 노드가 동시에 사용하면 충돌 가능성.
어떻게 충돌을 감지하고 복구하는지 프로토콜이 필요.

slotted ALOHA
타임 슬랏으로 채널이 나눠지고, 노드는 한 타임슬랏이 시작될 때 패킷을 보내도록 동기화한다. 두개 이상 노드가 같은 타임슬랏에 패킷을 보내면 충돌. 충돌이 발생하면 확률 P로 패킷을 재전송한다.

pure ALOHA
타임 슬랏 없고 동기화 안한다.
slotted ALOHA보다 효율 떨어진다.

CSMA(Carrier Sense Multiple Access)
전송하기 전에 채널을 본다. 채널이 바쁘면 전송을 연기한다.
전송시간이 있기 때문에 채널을 봤을 때 그 당시에 idle이었다고 해도 충돌이 발생 할 수 있다.
CSMA/CD (Collision Detection
충돌이 감지되면 전송을 중지.
충돌이 어떻게 감지되나? 신호 세기를 측정. 보낸 시그널보다 신호세기가 크다면 충돌이 발생했음을 알 수 있다. 무선에서는 신호감쇠현상 때문에 판단하기 어려움.

3) Taking turns
공평하게 돌아가면서 채널 사용. 
Polling - master/slaves, master가 순서를 정해준다.
Token passing - token을 가지고 있는 노드가 채널 사용. 토큰은 한 노드에서 다른 노드로 전달됨.

Link layer는 맥 어드레스를 사용.
48bit.
IP처럼 계층적이지 않다.

ARP
다른 노드의 맥 어드레드는 어떻게 아는가? 자신의 ARP  table에 IP와 맥 어드레스가 매핑되어 있다.
맥어드레스가 ARP table에 없으면 어떻게 하는가? 상대방의 아이피 주소를 담아 ARP packet으로 브로드 캐스팅. 상대방이 자기 아이피임을 알고, 자신의 맥어드레스를 담아 ARP packet을 보낸다.

Ethernet
유선 랜 기술.
Star topology : 가운데 스위치가 있고, 각 노드는 스위치랑 이더넷프로토콜을 따른다. 각각의 노드가 다른 충돌 도메인을 가지므로 서로 충돌이 발생하지 않는다.
unreliable, connectionless. TCP를 사용하고 있으면 거기서 못받은 패킷을 매꾼다.
unslotted CSMA/CD를 사용한다.
jam signal : 충돌을 감지했을 때 다른 노드들에게 자기 패킷 충돌 발생했다고 알림.
exponential backoff: m번 충돌 발생했을 때, 2의 0승부터 m승-1까지 수 중에서 하나를 랜덤하게 선택해서 그만큼 기다린다. 

Hub
Physical layer의 장치이다.
신호 약해지면 증폭시켜 보내준다.
한 링크에서 비트들이 들어오면 허브가 다른 모든 링크에 그 비트들을 보내준다.
충돌이 발생할 수 있지만 정작 허브에서는 CSMA/CD가 없어서 각 호스트가 충돌을 감지한다.
frame buffering이 없다.

Switch
허브보다 똑똑한 link layer 장치.
store and forward 방식. 패킷을 다 받은 다음에 보낸다.
들어온 프레임을 버퍼에 저장했다가 맥어드레스를 보고 하나씩 보낸다. 보낼 때 CSMA/CD를 사용한다.
각 호스트가 스위치에 직접 연결된 링크를 가지고 있다. 충돌이 없다. 각 링크는 별도의 이더넷 프로토콜을 가지고 있다. 
스위치는 각 호스트가 스위치의 어떤 인터페이스에 연결되있는지 어떻게 알까? Self-learning!
self-learning
스위치는 스위치 테이블을 가지고 있다. 각 엔트리에는 호스트의 맥어드레스와 그 호스트로 갈 수 있는 인터페이스번호가 매핑되어 있다. 프래임을 받을 때마다 보낸 쪽의 맥 어드레스와 들어온 인터페이스번호를 테이블에 없으면 추가한다.
프래임을 포워딩할 때 테이블을 보고, 테이블에 있으면 그 인터페이스 번호로 포워딩하고 없으면 flooding(들어온 인터페이스를 제외한 모든 인터페이스에 프래임을 포워딩) 한다. flooding을 하면 해당되는 호스트에 응답이 오는데, 그 응답을 보고 테이블에 추가한다. 

스위치와 라우터비교
스위치는 링크레이어, 라우터는 네트워크 레이어.
스위치는 스위치테이블, 라우터는 라우팅 테이블을 가지고 있다.
스위치는 self-learning, 라우터는 라우팅 알고리즘이 있다. 

'공부 > 네트워크' 카테고리의 다른 글

Network Layer  (0) 2011.08.15
Transport Layer  (0) 2011.07.28
Application layer  (0) 2011.07.23


Posted by skyjumps
공부/네트워크2011. 8. 15. 18:25


transport segment를 sender에서 receiver로 보내는 역할.
datagrams으로 캡슐화(헤더붙이기)를 한다.
모든 호스트와 라우터에 network layer protocols이 있다.
router는 헤더를 보고 다른 곳으로 전달한다.

네트워크 레이어에서의 두가지 핵심적인 기능은 forwarding과 routing이다.
forwarding은 라우터에서 패킷을 다음 라우터로 보내는 것. 
routing은 출발지에서 목적지까지의 길을 정하는 것.

datagrams이 전송되기 전에, 두 end hosts와 라우터들이 가상의 연결을 맺는다.
transport layer의 경우 두 프로세스간 연결인 반면 network layer의 경우에는 두 호스트간 연결서비스를 제공한다.

Network layer에는 연결지향적인  VC network와 비연결적인 datagram network 서비스를 제공한다.
transport layer와 비교해서 network layer는 호스트간 서비스이고, 네트워크는 둘 중에 하나만 선택할 수 있고, 둘 다는 못쓴다. 그리고 네트워크 코어에서 서비스를 구현한다.

VC. virtual circuit.
전화망 같이 동작한다.
성능이 좋다.
전송전에 setup을 한다.
각 패킷은 VC id을 지니고 있다.
라우터는 각 패킷이 어디로 보내져야 할지 상태를 유지한다.
링크, 라우터 자원을 VC에 할당해서 delivery나 delay를 보증할 수 있다. 

Datagram networks
setup이 필요없다.
이 레이어에서는 연결의 개념이 없고
도착지 host 주소를 보고 패킷을 포워딩한다.
주소를 볼 때 가장 긴 prefix로 match한다. 
단순하다. 복잡한 기능은 end system이 하도록 미룬다.

라우터 아키텍쳐
라우터의 두가지 핵심 기능 : 라우팅 프로토콜,  datagram을 인풋링크에서 아웃풋링크로 포워딩.
인풋포트 -> switch fabric -> 아웃풋포트

인풋포트
인풋포트의 포워딩 테이블을 보고 아웃풋 포트를 정한다.
 switch fabric에 포워딩되는 속도보다 데이터그램이 인풋포트에 도착하는 속도가 더 빠르면 큐에 저장된다.

switch fabric
switch fabric은 메모리나 버스, interconnection network로 만들 수 있다.

아웃풋포트
큐가 있어서 속도차 보완. 
큐에 있는 패킷중에서 어느 순서로 전송해 줄 것인지 선택할 수 있다.

큰 ip 데이터그램은 작게 쪼개질 수 있다. fragmentation.
마지막 도착지에서 합쳐진다.

subnets
ip adress는 subnet 부분과 host 부분으로 나눌 수 있다.
인터페이스를 때어냈을 때 분리되어 생기는 작은 네트워크들.
같은 subnet을 가진 호스트들은 라우터를 거치지 않고 직접통신이 가능하다.

CIDR
Classless InterDomain Routing.
subnet, host part 구분이 고정되지 않음.

어떻게 아이피를 얻는가?
수동으로 설정할 수도 있고, DHCP(Dynamic Host Configuration Protocol)을 이용해서 자동으로 받을 수 있다.

network가 subnet part를 어떻게 얻는가?
ISP가 가진 아이피 주소공간을 8개의 subset으로 쪼갠다.

ISP는 어떻게 아이피 주소공간을 얻는가?
ICANN (Internet Corporation for Assigned Names and Numbers)에서 받는다.

NAT (Network Address Translation)
전체 네트워크를 하나의 아이피가 대표한다.
좋은점 : 주소 절약. 내부 네트워크가 변경되도 바깥 네트워크는 몰라도 되고, 바깥쪽(ISP)이 변경되도 안쪽은 몰라도 된다.
테이블을 이용하여 안쪽이나 바깥쪽 네트워크로 들어오거나 나가는 패킷의 주소를 수정해준다.
NAT은 포트넘버를 보기 때문에 IP레어어 이상을 본다.
바깥쪽 네트워크의 호스트가 안쪽 네트워크의 호스트 연결을 원할 때는 어떻게 하는가?
수동으로 엔트리를 추가하거나 UPnp라는 프로토콜을 사용하여 자동으로 엔트리를 추가. 아니면 relaying이라고 두 호스사이에 다리역할을 하는 것을 둔다. 

ICMP(Internet Control Message Protocol)
라우팅에 관련된 정보를 주고 받는다. 예를 들어 TTL이 만료되었다는 메시지를 보낸다던가, 목적지 호스트에 도착해서 더이상 더 나아갈 수 있는 포트가 없다는 패킷을 보내는 것 등등.
 
Ipv6
기존의 32비트 어드레스보다 더 많은 주소길이를 갖는다.
헤더는 40 byte로 고정(헤더를 따로 추가할 수 있다, 길이가 고정되어 있어서 파이프라인 구현할 수 있다.)
fragmentation은 라우터가 분할하고 합치느라 복잡해지기 때문에 허용하지 않는다.
 
tunneling.
IPv4에서 IPv6도 작동하게 하는 방법.
IPv6에서 Ipv4로 갈 때 패킷 추가로 데이터를 붙여서 Ipv4에서도 작동하게 한다.

라우팅 알고리즘

1) Link State
각 라우터가 네트워크의 라우터들이 어떻게 연결되었는지에 대한 정보를 알고 있다.
각 라우터는 독립적으로 도착지에 대한 최선의 경로를 계산한다.
다익스트라 알고리즘 사용할 수 있다.
단점으로 routing loop가 발생할 수 있다.
한 패킷이 어느 특정 목적지로 갈 때, 2개의 서로 이웃한 라우터가 각각 서로의 라우터로 가는것이 가장 짧은 길이다 판단하고 포워딩시킬 때 루프 발생.
각 라우터가 이웃끼리 서로 정보교환을 하지 않고 경로를 계산해서 발생하는 문제이다.

2) Distance Vector
한 라우터 x에서 다른 라우터 y까지 가는 최단 경로.
각 라우터는 자신의 이웃들로 가는 링크 비용을 알고 있고, 자신의 distance vector와 이웃의 distance vector를 가지고 있다.
각 라우터가 링크비용이 변경되거나 새로운 디스턴스 벡터를 받았을 때 자신의 DV를 수정하고 수정되었으면 이웃들에게 자신의 DV를 보낸다.
벨만포드 알고리즘을 사용해서 발생하는 단점으로 count to infinity가 있다.
A가 B에게 특정 목적지로 가는 경로를 알려줄 때, B는 그 경로가 자기를 포함한 경로인지를 알지 못한다.
특정 목적지로 가는 링크가 끊어졌을 때 A와 B사이에 특정 목적지로 가는 최단경로가 무한대까지 서서히 수정이된다.

Hierarchical Rounting
여러개의 라우터를 autonomous systems(AS)로 묶는다.
한 AS의 라우터들은 같은 라우팅 알고리즘을 사용한다. (intra-AS routing protocol)
Gateway router : 다른 AS의 라우터를 연결해주는 라우터.

forwarding table은 같은 AS내부의 라우터쪽으로 포워딩할때는 intra-AS 라우팅 알고리즘을 사용하고, 다른 AS의 라우터쪽으로 포워딩할 때는 intra-AS와 inter-AS 라우팅 알고리즘을 사용한다.

Inter-AS
AS 밖으로 나가는 패킷이 있을 때 어느 AS로 포워딩될지 알려준다.
2개 이상의 AS로 갈 수 있는 경우, 자신과 가까운 gateway router에게 패킷을 처리하라고 맡긴다.

Intra-AS routing protocols

1)RIP (Routing Information Protocol)
distance vector 알고리즘을 이용한다.
이웃에게 매 정해진 시간마다 자신의 DV를 보낸다. (advertisement)
포워딩 테이블에는 다른 네트워크로 가기 위한 다음 라우터 정보가 있다.
일정시간 반응이 없으면 그 라우터가 유효하지 않은 걸로 간주한다.

2) OSPF (Open Shortest Path First)
Link State algorithm을 사용.
LS 패킷을 전체 AS에 퍼뜨림.
OSPF 메시지 보안을 제공
같은 비용의 Path가 두개 이상 있을 때 허용.
hierarchical을 제공. 하나의 AS가 크면 작은 영역으로 나눈다. 나눠진 각 영역을 Area라고 한다.
area border routers: 자신의 area에 있는 비용정보들을 요약하고, 다른 area의 area border routers에게 알려준다.
backbone routers: backbone network에 대한 라우팅 정보를 가지고 있다.
boundary routers: 다른 AS와 연결하는 라우터.

AS{multiple routers in an area -> area border routers -> backbone routers -> boundary routers} -> another AS{...}

3) BGP (Border Gateway Protocol)
표준
AS가 이웃 AS들로 부터 그것들이 접근할 수 있는 subnet의 정보를 얻는다.
AS 내부 라우터들에게 이 정보를 뿌린다. 

라우터들은 TCP연결을 통해 라우팅 정보를 주고받는다. (BGP session)
AS가 다른 AS에게 특정 prefix로 시작하는 아이피를 자기에게 보내달라고 알린다.(advertise)
AS내부에서는 iBGP를 사용해서 이 정보를 내부의 라우터들에게 알려주고,
AS에서 다른 AS로 보낼때는 eBGP를 사용.
라우터는 새로운 prefix정보를 받으면 자신의 포워딩 테이블에 기록.

prefix를 알릴 때 몇 가지 정보(BGP attributes)를 더 붙여서 보낸다.
AS-PATH는 prefix advertisement가 어떤 AS들을 거쳤는지.
NEXT-HOP은 현재 AS에서 다음 AS로 가는데 지나가는 AS 내부의 라우터들.
게이트웨이 라우터가 route advertisement를 받았을 때, poliy를 적용해서 다른 AS에 보낼지 말지를 정한다.
 
어떤 prefix로 갈 수 있는 라우터가 여러개 있을 때, 하나를 정해야 한다. 정책에 따라 할 수도 있고, AS-PATH가 짧은 것으로 정할 수도 있고, 가장 가까운 Next-hop으로 정해서 선택을 떠넘길수도 있고, 등등.

 

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Transport Layer  (0) 2011.07.28
Application layer  (0) 2011.07.23


Posted by skyjumps
공부/네트워크2011. 7. 28. 09:52


Transport services and protocols

프로세스간 통신
발신쪽에서는 segments로 쪼개서 network layer에게 전달.
수신쪽에서는 segments를 조합하여 message로 만들어 application layer에 전달
TCP와 UDP 프로토콜이 있다.
TCP : reliable, 보낸 순서대로 도착. 
UDP : 순서가 없이 도착.
Transport layer는 delay를 보장하거나, bandwidth를 보장하지 않는다.

Multiplexing/demultiplexing

demultiplexing : transport layer에 있는 여러 segments를 적절한 socket으로 보내주는 것.
Multiplexing : 여러 소켓으로부터 data chunks를 모아서 각 data chunk마다 header 붙여주고 암호화해서 segment로 만들고, network layer에 전달하는 것.

Connectionless demultiplexing
udp socket들은 destination IP address와 destination port number로 구분된다.
IP datagram이 다른 host에서 왔더라도 dest ip와 dest port가 같으면 같은 소켓으로 들어간다.

Connection-oriented demux
TCP 소켓들은 출처아이피, 출처 포트번호, 목적지 아이피, 목적지 포트번호로 구분된다.
4가지 정보로 적절한 소켓으로 들어간다.
  
UDP

데이터를 읽어버릴 가능성이 있다.
세그먼트들이 순서없이 application layer에 전달된다. 
No connection
덕분에 header size가 작고, 빨리 보낼 수 있다.
reliability는 application layer에게 맡긴다.
에러체크는 한다.(checksum)
transport layer의 기본기능인 multiplexing과 demux 기능을 한다.

Reliable data transfer(RDT)

1.0
bit error, packet 손실 없는 이상적인경우

2.0
bit error가 있는 경우
받은 packet에 문제가 없으면 ACK을 전송
문제가 있으면 NAK 전송
ACK과 NAK에 비트에러가 있다면?

2.1
ACK과 NAK에 비트에러가 있으면
sender가 패킷을 재전송 한다.
패킷에 시퀀스넘버가 있어서  receiver가 이미 ACK을 보낸거면 ACK만 전송한다.

2.2
NAK대신 ACK을 사용.
ACK 패킷에도 시퀀스넘버 포함.

3.0
에러와 loss 둘 다 있을 때
timer 사용.
packet이 loss 되었을 때 – timeout, 패킷 재전송
ACK이 loss 되었을 때 – timeout, 패킷 재전송, 패킷 중복, 시퀀스 넘버로 알 수 있다.
ACK이  delay 될 때 – timeout, 패킷 재전송, 패킷 중복, 시퀀스 넘버로 중복 파악.

Pipelining

한번에 여러개의 패킷을 보낸다. ACK을 안기다린다.
링크 활용률이 올라간다.

Pipelining protocols

1) Go-Back-N
Sender : timeout 발생시 ack을 받지 못한 패킷 모두 재전송
Reciever : 다음번 수신할 패킷의 시퀀스 번호만 알고 있으면 된다. 이 번호가 아닌 패킷이 들어오면 버린다. 그리고 최근에 어디까지 받았다는 걸 알려주려고 시퀀스넘버를 담은 ACK을 보낸다. Cumulative acks(5번 ACK을 보내면 1,2,3,4도 잘 받았다는 것을 내포함)
2) Selective repeat
리시버는 패킷을 받으면 그 패킷에 대한 ACK을 보낸다. 순서대로 오지 않은 패킷은 버퍼에 저장했다가 나중에 순서대로 되면 그 버퍼에 있는 모든 패킷들을 윗 레이어로 보낸다. 센더는 개별 패킷에 대한 타이머를 가지고 있다. 

TCP

Byte stream (message의 경계가 없다.)
Round Trip Time(RTT) and Timeout
Timeout은 RRT보다 크게.
현재 RRT에 새로운 패킷의 RTT를 반영. 그리고 여유분을 둔다.
Cumulative acks
순서대로 오지 않은 segments들을 버퍼에 보관.
재전송 타이머 한개.
timeout이 발생하거나, 중복된 ack을 받으면 패킷재전송이 이루어진다.
Timeout 발생하면 가장 오랫동안 ack을 받지 않은 패킷을 재전송한다.

Fast Retransmit

time-out 까지 안기다리고, 리시버에서 3번 같은 ACK을 보내면 data가 loss되었다는 걸로 생각하고 재전송한다.
 
TCP flow control

sender가 receiver의 버퍼의 spare room 한도 내에서 패킷을 보낸다.
Segment 안에 RcvWindow 값을 넣어서 sender가 spare room를 알 수 있다.
 
Congestion control

네트워크망을 보고 전송속도를 조절한다.
아무리 sender쪽의 데이터 전송률이 높아도 Output link의 data 수용 능력은 한계가 있다.
패킷 loss로 인한 재전송과 delay로 인한 재전송 때문에 보내는 데이터 전송률이 실제로 받은 데이터 전송률보다 크다. 데이터가 적게 들어오는 셈.

Congestion control 두가지 방법

1) end-system에서 control
network로부터의 피드백이 없이, end-system이 loss와 delay를 판단한다.
2) Network-assisted
router가 end-system에게 피드백을 제공한다.

Congestion control 알고리즘

하기 전에 용어정리
MSS(Maximum Segment Size) : 하나의 TCP segment가 가질 수 있는 최대 data size. 
CongWin : Congestion Window (TCP sender가 네트워크에 트래픽을 보낼 수 있는 전송률)
sender는 CongWin의 크기를 조절하면서 Congestion Control을 한다.
sender는 최대 CongWin만큼 수신확인 없이 segments를 보낼 수 있다.
1) Additive Increase Multiplicative Decrease (AIMD)
Loss가 발생할때까지 CongWin을 매 RTT마다 1 MSS 씩 증가한다. (Additive Increase)
Loss가 발생하면 CongWin을 절반으로 줄인다. (multiplicative decreases)
이렇게 linear하게 증가하는 것을 congestion avoidance라고 한다.
2) Slow Start
CongWin이 1MSS부터 시작한다.
첫번째 loss가 발생할 때까지 CongWin이 지수함수를 따른다.

loss 발생했을 때 처리
3개의 duplicate ACKs을 받으면 CongWIn을 절반으로 줄이고, linear하게 증가시킨다.
Timeout이 발생하면 CongWin을 1로 줄이고, 지수함수를 따른다. (상황이 심각하니 과감하게 줄인다.) 그리고 threshold에 이르면 linear하게 증가한다.  threshold는 timeout 발생하기 전 CongWin의 절반.

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Network Layer  (0) 2011.08.15
Application layer  (0) 2011.07.23


Posted by skyjumps
공부/네트워크2011. 7. 23. 16:37


Network application
email, web, p2p,network game 등.

end system에서 작동한다.
네트워크를 통해 통신한다.
network-core에는 없어도 된다.

Application architectures
Client-server
Peer-to-peer(p2p)
Hybrid of client-server and P2P

1) Client-server
server ; always-on host(항상 네트워크에 연결되어, 클라이언트의 서비스요청을 처리), server farms(server host가 여러대, 시스템 규모면에서 확장)
client : 서버와 통신, 서로 다른 client와 직접적으로 통신하지 않음.

2) pure p2p architecture
always-on server가 없음, 임의의 end system끼리 직접적으로 통신, 확장성면에서는 좋으나, 관리의 어려움이 있다. self-scalability(peer가 peer에게 file을 요청하는 동시에, 다른 peer들에게 파일을 전송할 수 있다.

Skype는 client-server방식, p2p둘다 사용, client끼리는 직접적으로 통신, 주소 찾을 때에는 서버와 통신.

Processes communicating
host에서 돌아가는 프로그램.
같은 호스트에서는 운영체제의 IPC(inter-process communication)에 의해 통신한다.
IPC - 파이프, 시그널, 메세지큐, shared memory, 세마포어, 파일시스템
다른 host의 process 통신은 socket을 통해 message를 주고받는 방식이다. client process가 요청하고, server client가 그 요청을 처리.
socket은 application layer와 transport layer 사이의 interface.
API(application programming interface)를 이용해서 아래 레이어에게 정보를 준다.

Addressing processes
프로세스끼리 메시지를 주고 받으려면 프로세스를 식별할 수 있는 값이 있어야 한다.
IP address와 port

Application layer protocol
메시지 교환 타입정하기(request인지 response인지)
syntax(message안에 어떤 field가 있고, field를 어떻게 작성해야 하는지)
semantics(field가 가진 정보의 의미)
언제 어떻게 보낼지 규칙
공식적인 프로토콜과 독자적인 프로토콜

application-layer가 필요한 transport-layer의 서비스
Data loss(일정부분을 손실해도 상관없는지, 100% 손실없는 데이터전송을 요구하는지)
Timing (low delay 요구 여부)
Throughput (최소 throughput을 보장하느냐 안하느냐)
bandwidth - 1초에 전송되는 비트수, bps, 속도가 아님. bandwidth가 높다는 것은 수도관에서 수도관이 커지는 것을 상상.
throughput - 실제 네트워크에서의 bandwidth.
보안여부

Internet Transport protocols services
TCP
connection oriented, reliable transport, flow control, congestion control제공, timing, minimum throughput 보장 안하고, security 제공 안함.
UDP
connection setup, reliability, flow control, congestion control, timing, throughput guarantee, security 다 제공 안함.
빨라서 쓴다.

HTTP
Hypertext transfer protocol
TCP 사용
stateless 프로토콜 (서버는 클라이연트의 과거 요청 정보를 유지하지 않는다.)

HTTP connections
Nonpersistent HTTP (한 tcp 연결에 최대 하나의 object(그림파일, html 파일 등)가 전송)
Persistent HTTP (한 tcp 연결에 여러 object가 전송.)

RTT(Round trip time)
한 작은 패킷이 client에서 server로 가서 다시 되돌아 오는 데 걸리는 시간
file transmission time : 2RTT + transmit time (연결요청, 연결승인, object요청, object승인 및 전송)

object당 2RTT 요구.
각 TCP connection overhead 문제.
 
Persistent HTTP
server와 client 연결 계속 유지. 파일보내는데 최소 하나의 RTT만 필요하다.
보통 파이프라인을 사용해서 요청에 대한 응답을 기다리지 않고 요청을 줄지어서 보낸다.

HTTP request message format
Request line(Get, Post, Head), Header line(Host, User-agent 등), Blank line, Entity line

출처 : project67555.appspot.com

Post method : input 값들이 entity body에 들어감.
Get method : input 값들이 URL 부분에 인코딩된다.

HTTP response message
status line(HTTP/1.1, 200, OK), header lines(Connection:close, Date, Server:Apache 등), entity body

출처 : project67555.appspot.com

User-server state : cookies
서버가 user를 식별하여 상태를 알 수 있는 방법.
http header에 쿠키정보 담아 주고 받는다.
쿠키파일은 사용자의 컴퓨터에 저장되며 웹브라우져가 관리한다.
 
Web cache
proxy server
client가 server에게 요청할 때 중간에 proxy server의 캐시에서 client가 요청하는 데이터가 있으면 client에게 보내준다.
server까지 안가도 되니까 빨리 얻을 수 있고, 외부 네트워크의 트래픽(네트워크로 전송된 데이터 량)도 줄일 수 있다. 
항상 최신의 데이터를 유지하고 있어야 한다. cache가 데이터가 수정되었는지 서버에게 메시지를 보내고 수정이 안되었다고 응답이 올 경우, client에게 데이터를 보낸다.

Electronic Mail
SMTP는 메일 전송 프로토콜
메일 서버는 user가 메일 서버의 자기 메일상자에 접속해서 메일을 다운받을 수 있도록 한다.
Pop protocol을 이용해서 메일에 접근하고 다운 받는다.

DNS (Domain name system)
도메인 이름과 IP 주소 매핑
DNS 서버는 계층적으로 분산되어 있다. 집중되어 있으면 위험하다. 트래픽도 많을 거고.
DNS 서버는 캐시를 사용해서 루트 DNS서버까지 가지 않아도 된다.
루트 DNS 서버도 여러군데 분산되어 있다.

Pure p2p 구조
항상 켜져있는 서버가 없다.
peer들끼리 연결해서 통신한다.

서버 방식보다  빨리 client들에게 파일을 전송할 수 있다.
서버는 파일을 한번만 올리면 되고, client들이 업로드에 참여.

서버가 index정보를 가지고 있을 때
클라이언트가 서버에게 peer 정보 리스트를 받고 peer들끼리 파일을 주고 받는다.
서버의 index가 집중되어 있는 경우 위험하다.

Query flooding
fully distributed이다.
overlay network : peer x와 y사이에 tcp 연결을 edge로 하는 가상의 그래프
tcp연결 되어 있는 peer에게 query message를 보내고 그 peer는 자기의 peer들에게 query message를 전달한다. 그래서 원하는 목적지에 도착하면 그 peer는 Queryhit을 메시지 보낸 peer에게 보낸다. 그래서 queryhit은 결국 처음 query message를 보낸 peer에게 전달된다.
traffic이 기하급수적으로 늘어나는 문제.

Hierarchical Overlay
super node끼리 p2p 네트워크 형성
한 super node에 여러개의 peer들.

Peers as relays
나가는 것은 문제가 없는데 들어오는 것은 문제가 되는 NAT에 대한 것.
NAT을 사용하는 서로 다른 수퍼노드에 있는 peer끼리 통신하기 위해 둘 사이에 session을 생성.

Socket programming
TCP는 데이터가 byte stream 형태로 전송
UDP는 데이터가 패킷단위로 쪼개져서 전송.

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Network Layer  (0) 2011.08.15
Transport Layer  (0) 2011.07.28


Posted by skyjumps