반응형

 

 

 

 

 

1계층 물리 계층

물리적인 매체를 이용해 비트 스트림을 전송

비트 단위 전송 010100

 

 


 

 

2계층 데이터링크 계층

hop to hop 전송 담당

Mac 주소 사용

유선 - 이더넷 MTU 1500byte

무선 - LTE

 

IP주소를 이용해 바로 옆(라우터, Host)으로 전달하는 역할을 하는 계층

 

데이터를 전송하고자 할 때 매체를 타고 전파된다.

매체를 이용하면 브로드캐스트로 전파된다. (사람이 공기를 이용해 말을 하듯이)

여러 노드가 동시에 매체를 이용하게되면, 충돌이 발생한다. 

 

충돌을 해결하기 위해 여러 시도 -> 정해진 시간마다 노드가 데이터를 보내는 방식

현재 사용하는 방식은 임의로 아무때나 Random Access하는 방식을 사용

임의로 아무때나 매체에 접근하므로 충돌은 언젠간 발생하며, 충돌을 해결해주어야 한다.

 

CSMA(carrier sense multiple access)

데이터를 보내기전에 매체를 감지하여 확인 후 전송한다.

 

CD(collision detection)

보낸 데이터의 충돌을 감지하면 전송을 멈춘다.

랜덤 딜레이를 주고 이후에 다시 전송을 시도한다.

 

 

 

스위치 (STAR형)

스위치가 중간에서 순서를 정리

스위치는 네트워크 관점에서 큰 의미 X

단순하게 연결을 위해 사용하는 것

switch table  [destination MAC : port]

 

 


 

ARP(IP를 사용하므로 사실 3계층에 위치)

IP를 이용해 MAC주소를 알아낸다.

 

프레임은 목적지 MAC주소로 데이터를 전송하므로 

목적지의 MAC주소를 알아야 한다.

MAC주소를 알아내기 위해 IP를 이용한다.

 

출발지 노드는 ARP TABLE [IP : MAC] 을 갖고 있다.

테이블에 IP에 해당되는 MAC 주소가 없다면

ARP TABLE을 채우기위해 브로드캐스트로 ARP를 전송

IP에 해당되는 정보를 가진 노드가 응답으로 자신의 MAC 주소준다.

출발지 노드는 목적지 MAC 주소를 채우고 데이터를 전송

 

스위치를 이용할 때는 데이터 링크(MAC)까지 올라가고,

ARP를 이용하려면 라우터 - 네트워크 계층 (IP)까지 올라가야 한다.

 

라우팅 테이블을 만들 때, ARP 테이블도 만든다.

 


 

 

3계층 네트워크 계층

장비: 라우터 - NAT, Forwarding, 방화벽

Host to Host

IP 주소 사용

 

 

라우터 동작 방식: 라우팅 알고리즘 -> 포워딩 테이블 구성 -> 포워딩

 

 

ip를 하나하나 다 저장하면 방대해지므로

서울, 대전, 부산과 같이 크게 묶은 후 라우팅 테이블의 ip range(Network Id)를 본다.

라우터는 라우팅 테이블을 보고 IP의 subnet mask 만큼 네트워크 IP로,

해당되는 라우터로 패킷을 forward (ip range가 가장 길게 매칭되는 곳으로 전송)

서브넷: 같은 prefix를 갖는 집합

 

 

 

라우팅 테이블 구성 방식

(1) Link state - 다익스트라 알고리즘

브로드캐스팅으로 자신의 링크정보를 네트워크에 뿌린다.

각 점은 각자 다익스트라 알고리즘을 수행하여 라우팅 테이블을 구성한다.

범위는 라우터들이 속한 도메인 범위에서 수행

 

(2) Distance vector - 벨만 포드 알고리즘

min(자신의 옆 라우터 이동 비용 + 도착지까지의 비용)

 

 

Fragmentation

IP 패킷을 2계층 이더넷 MTU에 맞게 분리, 조립하는 과정을 거친다.

재조립에 사용되는 식별자(identification), Offset을 헤더에 갖는다. (같은 데이터면 1씩 증가)

 

 

 


 

 

4계층 전송 계층

Process to Process

 

TCP, UDP

헤더에 포트번호를 갖고 있음

 

TCP, UDP 세그먼트도 이더넷 MTU를 따라야하기 때문에 분리한다.

 

 

 

TCP - 신뢰성 있는 통신

3way handshake(TCP Flags [Syn, Ack, Fin])

를 이용해 통신을 성립 후 신뢰성 지향 송수신을 한다.

버퍼를 이용해 흐름제어, 혼잡제어를 한다.

항상 수신측의 상황을 고려한다.

ack로 세그먼트의 시퀀스 넘버를 요청

 

흐름제어

슬라이딩 윈도우로 흐름을 제어한다.

ack를 받으면 ack 이후를 즉시전송 후 슬라이딩 윈도우를 밀고, 다시 전송한 세그먼트들의 ack를 기다린다.

윈도우의 크기는 수신측 상황에 맞춘다.

 

혼잡제어

송신한 세그먼트들이 timeout될 때 까지 지수적으로 증가시켜서 세그먼트를 전송해본다.

timeout이 발생하면 최종 전송 크기의 반으로 감소시켜 진행하고, 이후 가산 증가시키며 전송

 

 

 

 

 

UDP - 신뢰성 없는 통신

오류제어만 수행한다.

오류가 발생하면 해당 패킷은 폐기

헤더가 작아 커스텀하여 사용하기도 한다.

 


 

 

응용 계층

암호화, 실시간 처리 등을 응용계층에서 전담한다. (OSI 7 layer의 세션, 표현 계층의 역할을 포함한다.)

 

TCP socket 또는 UDP socket 을 형성하여 통신한다.

 

여러개의 소켓이 형성

소켓위에서 응용계층 프로세스가 동작한다.

전송계층의 헤더를 보고 맞는 소켓(port)으로 올린다.

 

 

 

 

HTTP 일 경우

헤더와 바디로 구성된 메세지를 전송계층에 데이터로 넘김

 

 

 

 


 

반응형

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

Blocking / Non Blocking, Synchronous / Asynchronous  (0) 2023.10.03

+ Recent posts