Major`(171)
-
[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 -
[Network] 애플리케이션 계층 : DNS
DNS (Domain Name System) - 호스트 네임(도메인 네임)을 IP주소로 변환해주거나 IP주소를 호스트네임으로 변환해주는 서비스 - DNS 서버들은 계층구조로 구현된 분산 데이터베이스이다 DNS 서비스 (1) 호스트 네임을 IP 주소로 변환 - user가 url창에 호스트 네임을 치면 DNS가 해당 호스트 네임을 IP주소로 변환해준다 www.yahoo.com → 202.165.107.50 www.google.com → 142.250.196.132 (2) 호스트 에일리어싱 (Host Aliasing) - 어떤 사이트의 정식 호스트 네임은 굉장히 복잡하다 그렇기 때문에 외부에는 복잡한 호스트 네임대신 간단한 호스트 네임 :: 별칭을 알려준다 - 호스트 에일리어싱 : user가 입력한 호스트 네..
2022.02.11 -
[Network] 애플리케이션 계층 : SMTP - POP3/IMAP
전자메일 (E-Mail)의 주요 요소 1. 사용자 에어전트 (User Agent) 2. 메일 서버 (Mail Server) 3. SMTP (Simple Mail Transfer Protocol) (1) 사용자 에이전트 (User Agent) - 메일 메시지를 읽고/쓰고/보내주는 프로그램 Gmail / Outlook / Thunderbird / .... (2) 메일 서버 (Mail Server) - 메일 박스, 메시지 큐로 구성된다 ▶ 메일 박스 - user가 받는 메시지를 저장/관리한다 user마다 메일박스가 구분되어 존재한다 사용자 User 1 User 2 User 3 User 4 메일 박스 Box 1 Box 2 Box 3 Box 4 ▶ 메시지 큐 - user가 보내는 메시지가 저장된다 user마다 구..
2022.02.11