Major`/컴퓨터 네트워크(32)
-
[Network] 네트워크 계층 : 계층적 라우팅
계층적 라우팅 (Hierarchical Routing) - 지금까지의 라우팅은 아래의 특정 조건을 가정으로 기술되었다 모든 라우터가 동일 하나의 네트워크를 기준 - 그러나 인터넷은 네트워크의 네트워크이고 모든 라우터는 당연히 동일하지 않다 현실 세계의 라우팅 문제 1. 확장 (Scale) - 인터넷상에는 6억개 이상의 Host들이 존재한다 따라서, 모든 목적지를 Routing Table에 저장할 수 없다 (너무 많기 때문) ▶ LS (Link-State) - 모든 라우터들이 서로에게 자신의 LS를 브로드캐스팅한다 이러면 각 Router간의 Link 비용을 굉장히 많이 사용하게 된다 :: 비효율적 - 원래 목표인 "user들의 Data 교환"보다 Data 교환을 하기 위한 Router끼리의 정보 교환이 더..
2022.02.27 -
[Network] 네트워크 계층 : 라우팅 알고리즘
라우팅 프로토콜 - 라우팅 알고리즘이 필요로하는 Network의 정보들을 모으는 역할 - Router끼리 해당 정보를 주고받기 위해 필요한 프로토콜 RIP / OSPF / BGP 라우팅 알고리즘 - Source → Dest까지 Router의 Network를 통과할 때 최적의 경로를 결정하기 위해 사용되는 알고리즘 - "좋은 경로" == "최소 비용 경로" 라우팅 알고리즘 분류 (1) 중앙 집중형 VS 분산형 ▶ 중앙 집중형 - 네트워크의 전체적인 정보(완전한 정보)를 가지고 Source → Dest 까지의 최소 비용 경로를 계산 각 Router가 네트워크 전체 정보(링크 비용)을 보유하고 있다 Link-State Algorithm :: LS Algorithm ≫ 다익스트라 알고리즘 ▶ 분산형 - 최소 비..
2022.02.26 -
[Network] 네트워크 계층 : ICMP / IPv6
ICMP (Internet Control Message Protocol) 1. (Host - Host) / (Host - Router) / (Router - Router) 간에 네트워크 계층 제어 정보 교환을 위한 프로토콜 에러 발생 여부 상호간에 서로 살아있는지 확인 (네트워크 연결 여부) >> Data를 교환하는게 아니라 상호간에 제어 정보를 교환하기 위한 프로토콜이다 2. IP의 상위 계층이다 물론 IP / ICMP / Routing_P 3개 모두 네트워크 계층 안에 속하긴 하지만, 그 안에서도 상위-하위가 나뉘어져 있다 따라서, ICMP 메시지는 최종적으로 IP 데이터그램의 페이로드에 캡슐화되어서 보내진다 IP 헤더 페이로드 출발지 IP / 목적지 IP / .... ICMP 메시지 + 여러 Dat..
2022.02.23 -
[Network] 네트워크 계층 : NAT
NAT (Network Address Translation) - 사설 IP → 공인 IP로 변경할 때 필요한 주소 변환 서비스 - NAT 라우터를 사용해서 다수의 사설 IP 주소를 하나의 공인 IP주소로 변환시키는 기술 NAT 라우터에는 NAT 변환 테이블이 존재한다 (사설 IP 주소 : 포트 번호) :: (공인 IP 주소 : 새로운 포트번호) 형식으로 저장해놓는다 이러면 외부에서 NAT 라우터로 Response가 올 경우, Dest IP 주소(공인)을 서브넷 내의 특정 호스트의 IP 주소(사설)로 Dest를 변경시킨다 Example) ▶ Request :: 192.168.1.1 PC - 서브넷에 존재하는 PC (사설 IP 주소 : 192.168.1.1)가 외부의 Host에게 Reqeust를 보내려고 한..
2022.02.21 -
[Network] 네트워크 계층 : IP
네트워크 계층 프로토콜 IP 프로토콜 - Addressing 방식 지정 - IP 데이터그램의 형식 - 패킷 Handling 방식 >> Data의 전송 관련 제어 프로토콜 >> Data Plane 라우팅 프로토콜 - Packet의 경로를 결정 RIP / OSPF / BGP / .... >> Control Plane ICMP 프로토콜 - Packet의 에러 보고 - 라우터의 신호 제어 >> 에러/신호 관련 제어 프로토콜 IP 데이터그램 형식 (IPv4) 고정 헤더 : Version / Header Length / TOS(Type of Service) / Total Length / Identification / Flags / Fragment offset / TTL(Time to live) / Protocol ..
2022.02.18 -
[Network] 네트워크 계층 : Router
Router 기능 1. Router Processor가 라우팅 알고리즘/프로토콜을 수행해준다 Control Plane :: 라우팅 기능을 수행하기 위해서 라우팅 프로토콜 메시지를 주고받음 Packet의 경로를 결정해준다 소프트웨어가 구현한다 2. Forwarding :: 입력 Link → 출력 Link로 Packet을 포워딩한다 Data Plane :: user의 Data를 라우팅 결과(경로)를 이용해서 포워딩 user의 Data를 빨리 전달하기 위해서 하드웨어로 구현 1. Packet이 Input Port로 들어온다 2. Input Port에서 Switching을 통해서 Output Port로 내보내진다 스위칭 구조(Switching Fabric)은 3가지가 존재 Input Ports Physical ..
2022.02.17 -
[Network] 네트워크 계층 : 가상 회선 - 데이터그램
네트워크 계층 - 송신 Host → 수신 Host로 Packet 전달을 담당하는 계층 ※ Transport Layer : 송신 Process → 수신 Process로 Packet 전달 - 모든 Host와 Router에 Network Layer Protocol에 내장되어 있다 송신 Host :: Network Layer 1. Transport Layer로부터 세그먼트를 받는다 2. 해당 세그먼트에 IP 헤더를 붙여서 데이터그램을 생성 >> 캡슐화 >> 송신측 Network Layer가 데이터그램을 송신 Host → 수신 Host로 보내준다 수신 Host :: Network Layer 1. 받은 데이터그램에서 IP헤더를 떼어내서 조사 >> 역캡슐화 2. 데이터그램에서 세그먼트를 추출해서 Transport L..
2022.02.16 -
[Network] 트랜스포트 계층 : TCP
TCP 1. Client와 Server 서로 1:1 통신을 한다 - Server는 Client별로 소켓을 보유하고 있기 때문에, 1:1로 양방향 통신이 가능하다 - 3-way handshake를 통해서 TCP 연결을 하면 소켓이 생성된다 2. 신뢰적이고, 순차적인 Data를 전달한다 - UDP와 달리, TCP는 Data를 바이트 스트림으로 인식 각 Data별로 Boundary가 존재하지 않는다 일단 Data를 TCP Buffer에 저장해둔다 혼잡/흐름 제어에 따라서 Data를 전송한다 이때, Data는 순차적인 바이트 스트림이므로 Window Size씩 전송이 된다 >> TCP는 Data의 Boundary가 존재하지 않고, 하나의 연속적인 바이트 스트림으로 인식 3. 연결지향형 서비스를 제공한다 - Cl..
2022.02.15 -
[Network] 트랜스포트 계층 : 신뢰성 있는 데이터 전송의 원리
(1) Checksum :: Packet에 오류가 있는지 확인 ▶ 송신측 1. 보내려는 세그먼트에서 체크섬을 계산 세그먼트 값들을 16비트로 나눠서 각각의 값을 더한후, 1의 보수를 취하면 체크섬이 계산된다 2. 계산된 체크섬 값을 세그먼트의 체크섬 필드에 insert해서 수신측으로 전달 ▶ 수신측 1. 수신된 세그먼트의 체크섬 값을 계산한다 먼저 체크섬 필드를 0으로 설정하고, 송신측에서 계산하는 것과 동일하게 계산 2. 수신된 세그먼트의 체크섬 필드의 값과 계산한 체크섬 값이 동일한지 확인 동일하면 오류 X 다르면 오류 O (2) Acknowledgement / Negative-Acknowledgement :: Packet에 오류가 있는지 없는지 응답해주기 - Receiver가 Sender에게 Pac..
2022.02.13 -
[Network] 트랜스포트 계층 : UDP
UDP 1. Network-Layer :: IP에 최소한의 기능만 추가한다 - 다중화/역다중화 - 오류 검사 (체크섬) 2. "best effort" 서비스를 제공 - Network-Layer가 주는 메시지 그대로 Application-Layer로 전달해준다 - 원본 Data와 뭐가 다르고, 어떠한 문제가 생겼는지 파악할 수 없다 ex) Data 손실 / Data의 순서가 어긋난채로 전달 UDP는 Data의 Boundary를 명확히 지킨다 각각의 Data를 독립적으로 전달한다 (Boundary가 명확) 3. 비연결형 서비스 - 핸드셰이킹을 통한 연결을 확립하지 않는다 :: 일방적으로 전달 - UDP 세그먼트(메시지)들은 서로 독립적으로 전달된다 각 메시지들은 자신의 목적지로만 전달된다 :: 서로 상관 X..
2022.02.13 -
[Network] 트랜스포트 계층 : Transport Layer
Transport Layer - 각 End System(Host)의 Process간의 논리적 통신을 제공 송신측 Host Application-Layer에서 전달된 메시지를 세그먼트로 분할해서 Network-Layer로 전달 수신측 Host Network-Layer에서 온 각 세그먼트들을 결합해서 Application-Layer로 전달 Network-Layer vs Transport-Layer ▶ Network-Layer - Host들 사이의 논리적 통신을 제공 출발지 Host → 목적지 Host로 전달 ▶Transport-Layer - Process들 사이의 논리적 통신을 제공 - Network-Layer에 의존적이고, Network-Layer의 기능을 강화 목적지 Host로 온 메시지 → 목적지 Ho..
2022.02.13 -
[Network] 애플리케이션 계층 : P2P
P2P (Peer to Peer) - Always-on 서버가 없다 - 임의의 end system끼리 서로 통신하는 구조이다 end system = peer - peer들은 인터넷에 간헐적으로 연결되고, 유동 IP 주소를 보유하고 있다 ex) 비트토렌트 (파일 분배) / Skype (화상전화) / ... 파일 분배 클라이언트 - 서버 구조 Server가 Client의 수(N)만큼 파일을 분배한다 Client는 해당 파일을 다운로드 한다 1. Server 업로드 파일 복사본 N개를 업로드한다 (파일 크기 : F / Server 업로드 속도 : Us) >> N개 복사본 업로드 시간 : NF/Us 2. Client 다운로드 각 Client들은 Server가 업로드한 파일을 다운로드한다 이 때, 다운로드 속도는..
2022.02.12