외워서 끝내는 네트워크 핵심이론 -기초 1
Network 와 Layer
Layer : 하위는 상위 요소에 전제이다.
- 행위, 기능, 존립, 의존적
Network : 관계
Networking : 상호작용
Layered : 언어가 있어야 말(글)이 있고 공기중으로 퍼져나갈 수 있다.
네트워크 통신도 마찬가지로 각 요소가 있어야 통신이 가능하다. → OSI 7Layer
DOD | OSI 단계 | 식별자 | 구분 | |
Application | L7 | HTTP | ||
- | ||||
Host to Host | L5 | SSL (TLS) | ||
Internet | L4 | TCP, UDP | Port 번호 | Interface / Service / Process (L2,L3,L7) |
Network Access | L3 | Internet | IP 주소 | Host |
L2 | Ethernet | MAC 주소 | Network Interface Card | |
- |
Host : Computer + Network
- Switch : Network 그 자체를 이루는 Host(Infra)
- End-point : 이용 주체 (단말기)
Switch : 단위요소인 Packet이 출발지에서 목적지까지 갈 때의 교차로 역할
Interface / Switching : 경로 선택을 의미
Router : L3 단계에서 Switch 해주는 모듈
- Routing table(이정표) 존재
*Matrix : 이동할 때의 비용
L2 : NIC + (L2)Frame + LAN card + MAC
-NIC(Network Interface Card) == LAN(Local Area Network)카드
- 유/무선 NIC 구별은 별로 안함
- NIC는 HW, MAC주소 있음
LAN : 네트워크의 규모
Frame : L2에서 단위
속도표현 : 1Gbps (bits) != 1GBps
L2 Access switch
- End-point 와 직접 연결되는 스위치
- MAC 주소 기반 스위칭
- 각 연결 : Interface, MAC, Port / Hub
- 연결/단절 Link-up / Link-down
- Uplink : Router 로 이동
L2 Distribution switch
- L2 Access 스위치를 위한 스위치
- VLAN(Virtual LAN) 기능 제공
Driver : 하드웨어 관리 SW
- NIC(Network Interface Card)
LAN과 WAN의 경계와 Broadcast
Broadcast
전체에게 뿌림, 비효율적이라서 꼭 필요할 때만 써야함
Broadcast 주소 = 방송주소 ↔ Uninicast
목적지 MAC(48bits)주소가 모두 1이면 Broadcast 다. [ FF FF FF FF FF FF (1111 1111 ... ) ]
LAN : Physical 딴의 네트워크의 규모
WAN : Logical 딴의 네트워크 규모
L3
IP
IPv4 주소 = 32bits = 4bytes = 2^8 (0 ~ 255)
192. 168.0 . 10 | |
Network ID | Host ID |
Packet
단위 데이터 L3 IP Packet 으로 외우기
Header, Payload 로 나뉘며 최대 크기는 MTU(Maximum Transmission Unit, 1500bytes)
Encapsulation과 Decapsulation
Encapsulation : 단위화, 포장
Decapsulation : 역단위화, 포장풀기
L2 Frame 안에 L3 IP Packet 있고 그 안에 L4 TCP Segment 있음 ...
Packet 의 생성, 전달, 소멸
집(Host) → 책(Packet) → 기사(Gateway) ... Routing ... → 집(Host) → 이름(Port) 로 전달
Socket : User Mode에 있는 Application 프로세스가 사용할 수 있도록 Kernel mode 에 있는 TCP/IP 를 추상화한 Interface (file)
프로세스(App) → Data 를 Write = Send → Data + TCP = Segment → Segment + IP = Packet → Packet + Ethernet Header = Frame → L2 Access Switch → Router ...
OSI 단계 | 데이터 단위 |
L7 | |
Socket | Stream |
L4- Network | Segment |
L3 - Internet | Packet |
L2 - Data Link | Frame |
L1 - Physical |
TCP/IP 송수신 구조
송신
1. HDD/SDD 에서 파일 일부분이 Poccess 의 Buffer 로 Copy
2. Buffer를 Send 함 Socket I/O Buffer 로 copy
3. User mode 에서 Kernel mode 로 넘어갈 때 분해가 발생
4. TCP에서 쪼게진 Segment 로 IP로 전달
5. IP에서 Packet 으로 만들어져서 전송
6. Packet 을 물리계층에서 전달 (Frame)
수신
1. Frame 받아서 IP에서 Packet 얻음
2. TCP 에서 Packet 풀어서 Segement 얻기
3. TCP 에서 Segment 풀어서 Socket I/O Buffer 채우기 - 순서 필요, ACK 발생, 여유공간 필요
4. Proccess 의 Buffer 로 Receive 해서 copy 하기
정리
네트워크와 연결된 Computer는 Host다.
이때 Switch는 MAC 주소 있고, IP 주소 있고, 데이터(L3,Packet) 전달 가능하니 그냥 네트워크 그 자체를 이루는 Host (Infra) 이다.
위의 네트워크 Infra 를 사용하는 주체는 End-point 라고 한다.
→ 컴퓨터 + 네트워크면 Host구나
→ Switch 는 네트워크 자체를 이루고 있으니 Host 이면서 Infra 구성요소구나
→ End-point 는 네트워크 (Infra) 사용만하는구나
→ End-point 도 컴퓨터 + 네트워크이니 Host겠지?
L2 Frame 단위고 L3 IP Packet 단위이다.
Broadcast 는 MAC 주소로 뿌리고 전체에 뿌리니까 범위설정이 중요하고 가끔 뿌려야한다.
Network 와 Layer
Layer : 하위는 상위 요소에 전제이다.
- 행위, 기능, 존립, 의존적
Network : 관계
Networking : 상호작용
Layered : 언어가 있어야 말(글)이 있고 공기중으로 퍼져나갈 수 있다.
네트워크 통신도 마찬가지로 각 요소가 있어야 통신이 가능하다. → OSI 7Layer
User Mode
-------------------------------------
TCP Kernel Mode
IP_____________________S/W
H/W
DOD | OSI 단계 | 식별자 | 구분 | |
Application | L7 | HTTP | ||
- | ||||
Host to Host | L5 | SSL (TLS) | ||
Internet | L4 | TCP, UDP | Port 번호 | Interface / Service / Process (L2,L3,L7) |
Network Access | L3 | Internet | IP 주소 | Host |
L2 | Ethernet | MAC 주소 | Network Interface Card | |
- |
Host : Computer + Network
- Switch : Network 그 자체를 이루는 Host(Infra)
- End-point : 이용 주체 (단말기)
Switch : 단위요소인 Packet이 출발지에서 목적지까지 갈 때의 교차로 역할
Interface / Switching : 경로 선택을 의미
Router : L3 단계에서 Switch 해주는 모듈
- Routing table(이정표) 존재
*Matrix : 이동할 때의 비용
L2 : NIC + (L2)Frame + LAN card + MAC
-NIC(Network Interface Card) == LAN(Local Area Network)카드
- 유/무선 NIC 구별은 별로 안함
- NIC는 HW, MAC주소 있음
LAN : 네트워크의 규모
Frame : L2에서 단위
속도표현 : 1Gbps (bits) != 1GBps
L2 Access switch
- End-point 와 직접 연결되는 스위치
- MAC 주소 기반 스위칭
- 각 연결 : Interface, MAC, Port / Hub
- 연결/단절 Link-up / Link-down
- Uplink : Router 로 이동
L2 Distribution switch
- L2 Access 스위치를 위한 스위치
- VLAN(Virtual LAN) 기능 제공
Driver : 하드웨어 관리 SW
- NIC(Network Interface Card)
LAN과 WAN의 경계와 Broadcast
Broadcast
전체에게 뿌림, 비효율적이라서 꼭 필요할 때만 써야함
Broadcast 주소 = 방송주소 ↔ Uninicast
목적지 MAC(48bits)주소가 모두 1이면 Broadcast 다. [ FF FF FF FF FF FF (1111 1111 ... ) ]
LAN : Physical 딴의 네트워크의 규모
WAN : Logical 딴의 네트워크 규모
L3
IP
IPv4 주소 = 32bits = 4bytes = 2^8 (0 ~ 255)
192. 168.0 . 10 | |
Network ID | Host ID |
Packet
단위 데이터 L3 IP Packet 으로 외우기
Header, Payload 로 나뉘며 최대 크기는 MTU(Maximum Transmission Unit, 1500bytes)
Encapsulation과 Decapsulation
Encapsulation : 단위화, 포장
Decapsulation : 역단위화, 포장풀기
L2 Frame 안에 L3 IP Packet 있고 그 안에 L4 TCP Segment 있음 ...
Packet 의 생성, 전달, 소멸
집(Host) → 책(Packet) → 기사(Gateway) ... Routing ... → 집(Host) → 이름(Port) 로 전달
Socket : User Mode에 있는 Application 프로세스가 사용할 수 있도록 Kernel mode 에 있는 TCP/IP 를 추상화한 Interface (file)
프로세스 → Data 를 Write = Send → Data + TCP = Segment → Segment + IP = Packet → Packet + Ethernet Header = Frame → L2 Access Switch → Router ...
OSI 단계 | 데이터 단위 |
L7 | |
Socket | Stream |
L4- Network | Segment |
L3 - Internet | Packet |
L2 - Data Link | Frame |
L1 - Physical |
TCP/IP 송수신 구조
송신
1. HDD/SDD 에서 파일 일부분이 Poccess 의 Buffer 로 Copy
2. Buffer를 Send 함 Socket I/O Buffer 로 copy
3. User mode 에서 Kernel mode 로 넘어갈 때 분해가 발생
4. TCP에서 쪼게진 Segment 로 IP로 전달
5. IP에서 Packet 으로 만들어져서 전송
6. Packet 을 물리계층에서 전달 (Frame)
수신
1. Frame 받아서 IP에서 Packet 얻음
2. TCP 에서 Packet 풀어서 Segement 얻기
3. TCP 에서 Segment 풀어서 Socket I/O Buffer 채우기 - 순서 필요, ACK 발생, 여유공간 필요
4. Proccess 의 Buffer 로 Receive 해서 copy 하기
네트워크 장애 → TCP 운영체제 수준에서 보정함
1. Loss - 유실
2. Retransmission - 중복해서 받음, ACK 여러번 받음
3. Out of oder - 순서 다르게 들어옴
4. Zero Window - Proccess 버퍼 공간 없음
IPv4 Header
TCP와 UDP / TCP는 배려남, UDP는 나쁜남자다.
TCP
TCP에만 연결(Connection, Session) 개념이 있다.
연결은 결과적으로 순서번호로 구현된다.
연결은 '상태(전이)' 개념을 동반한다. (연결 전, 중, 후)
TCP 연결 과정 (간략)
1. Server는 socket 을 생성해서 열고 연결을 대기함
2. Client 프로세스가 socket 을 생성해서 열면 PID 에 운영체제가 TCP Port 번호를 할당
3. TCP 연결 192.168.0.10 : 3000 → 192.168.0.20 : 80
4. L2 ... R ... L2 해서 전달
TCP 연결 과정 (3-way handshaking)
1. Client 가 랜덤으로 SYN(1000) 생성해 전송
2. Server 가 랜덤으로 SYN(4000) 생성 + ACK(1001) 생성해 전송
3. Client 가 ACK(4001) 생성해 전송
→ SYN 및 정책 교환 (MSS, Maximum Segment Size)
→ Client 는 SYN_SEND, ESTABLISHED 상태로 전이
→ Server 는 LISTEN, SYN_RCVD, ESTABLISHED 상태로 전이
TCP 연결 종료 과정 (4-way handshaking)
1. Client 가 FIN + ACK 전송
2. Server 가 ACK 전송
3. Server 가 FIN + ACK 전송
4. Client 가 ACK 전송
→ Client 는 ESTABLISHED, FIN_WAIT1, FIN_WAIT2, TIME_WAIT, CLOSED 상태로 전이
→ Server 는 ESTABLISHED, CLOSE_WAIT, LAST_ACK, CLOSED 상태로 전이
TCP Header
당연히 통신이니 Source port/ Destination port
연결해야하고 신뢰있으니 Sequence number / Acknowledgement number
헤더 길이, 해석 Data offset / Reserved 와 Flag들 / Window Size
Checksum, Urgent pointer
Option
UDP
UDP Header
통신이니 Source port / Destination port
Length / Checksum
서버에 다양한 client 가 물려있고 속도가 다 다름
이때 TCP 사용하면 가장 느린 애를 기준으로 모두 하향평준화됨
UDP 는 빠른 애는 빠르게 처리해줌
질문1 : 파일 다운로드 중 LAN 케이블 분리 후 연결하면 TCP 연결은?
→ TCP 는 L4 연결임 L1 랜선 연결을 끊은 거임
→ 따라서 TCP 연결은 유지됨 (오래되면 끊김)
→ 연결을 계속 재확인하는데 Heart beat 라고 함
SYN 연결요청 보내고 SYN + ACK 받으면 그냥 연결되었다고 앎 → 그냥 전화 받았다고 상대방인줄 앎 → 보안성이 없음
기밀성, 무결성, 가용성이 없다 → 연결을 신뢰하면 안된다.
Subnet Mask와 CIDR
Subnet Mask
목적지 IP 판단할 때 사용 : Network ID / Host ID 랑 Subnet Mask 랑 AND 연산 사용
CIDR(Classless Inter-Domain Routing)
192.168.0.10/24 : 24가 Subnet mask == 연산 사용
Subnetting
---
Broadcast IP 주소
목적지 IP : 3.3.3.3 - 데이터를 라우팅해서 게이트웨이 거쳐서 인터넷까지 연결
목적지 IP : 192.168.0.255 - 로컬 네트워크까지만 공유
Host 자기 자신 IP 주소 : 127.0.0.1
PC 에서 실행중인 프로세스끼리 통신을 해야할 때 편리하게 사용
TTL과 단편화
인터넷은 라우터의
인터넷은 라우터의 집합체라고 할 수 있는
논리 네트워크이다.
Router vs L3 Switch 포함관계? 논란 / 의미는 없음
인터넷의 핵심 구성요소
Router + DNS
Router : 정보가 거쳐가는 곳
DNS : 분산 구조형 데이터베이스
naver 로 접속하려고 하는데 TCP/IP 를 알아야하는데 우리는 모름
114로 가게에 연결하는 것처럼 DNS 을 거쳐서 도메인에 해당하는 IPv4로 연결됨
URL 주소 : www.naver.com 에서 www는 naver에 naver 는 com 에 포함됨
naver.com 은 Domain Name 이고 www는 Host Name 임
ko.wikipedia.org/ 는 org 안에 wikipedia 있고 호스트는 ko 임
분산 구조형?
우리가 Domain Name 보내면 ISP-DNS 거쳐서 IP 받아야함 (유효기간 있고 지나면 다시 물어봐야함)
PC마다 받은 DNS를 저장하는 DNS Cache 존재함
우리 컴퓨터 Hosts 파일에 정의하면 DNS 안거치고 바로 연결 가능
DNS < COM 담당 DNS < ... < Root DNS 이렇게 계층적 구조임
TTL과 단편화
TTL (Time To Live): Hop 마다 감소하는 패킷의 생명시간
단편화 : MTU크기 차이로 발생 -> 수신 End-point 에서 조립
1. IP|A + IP|B 들어옴
2. IP에서 IP|AB조립
3. TCP에서 Segment 추출
--> 단편화 안하려구 가장 작은 MTU로 보내는 방법 사용함
단편화 발생 : VPN IPSec 등이 적용되며 생김 … 추후정리
L3
IP주소 :
Subnet mask
Gateway IP
DNS 주소
자동으로 IP 주소 받기 : DHCP 사용하겠다
DHCP(Dynamic Host Configuration Protocol) : 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성된다.
- PC 전원 On
- Broadcast 전송
- DHCP Server 있는지 확인
- 응답해줌
- 이 주소 써도돼? 안되면 딴거 줘
ARP(Address Resolution Protocol)
: IP주소로 MAC 주소를 알아내려할 때 사용된다.
: ARP Request gateway IP인사람? -> 나 MAC 얌
: 보통 PC 부팅하면 Gateway의 MAC 주소를 알아야함
-> gateway IP 192.168.0.1 이라고 하면
-> 192.168.0.100 이 네이버 3.3.3.3에 접속하려하면
-> L3 에서는 IP 만 알면 됨
-> 근데 Gateway 까지는 L2 Frame 기반 스위칭/라우팅이니 MAC주소 필요함
-> Gateway 의 MAC 주소가 필요함
NIC에 MAC주소 잇고 IP 에 IPv4 주소 있음
Ping 과 RTT
Ping : 프로그램은 특정 Host 에 대한 RTT(Round Trip Time)을 측정할 목적으로 사용된다.
ICMP 프로토콜을 이용한다.
DoS(Denial of Service) 공격용으로 악용되기도 한다.
RTT(Round Trip Time) = Client 프로세스가 Socket 열어서 Server 랑 연결하려고 segment 보내고 돌아 온 시간
URL과 URI
Resource = File 이라고 생각
Uniform Resource Locator : 위치
Uniform Resource Identifier : 식별자
즉 Protocal://Address:Port 에서 Host 특정하고
이후 number/Path(or filemane)?Parameter=value 로 파일 경로 찾아서 띄우기
이때 web 으로 확장하면 파일 경로가 Server 에 연결되어 있다는 거임
HTTP
: HTML 문서를 전송 받기 위해 만들어진 응용프로그램 계층 (L7) 통신
L5 는 Socket + Stream 시작과 끝이 정해져야함
일반 / 응답 / 엔티티 헤더가 있음
요청에 사용되는 메서드는 주로 GET, POST
정리
네트워크와 연결된 Computer는 Host다.
이때 Switch는 MAC 주소 있고, IP 주소 있고, 데이터(L3,Packet) 전달 가능하니 그냥 네트워크 그 자체를 이루는 Host (Infra) 이다.
위의 네트워크 Infra 를 사용하는 주체는 End-point 라고 한다.
→ 컴퓨터 + 네트워크면 Host구나
→ Switch 는 네트워크 자체를 이루고 있으니 Host 이면서 Infra 구성요소구나
→ End-point 는 네트워크 (Infra) 사용만하는구나
→ End-point 도 컴퓨터 + 네트워크이니 Host겠지?
L2 Frame 단위고 L3 IP Packet 단위이다.
Broadcast 는 MAC 주소로 뿌리고 전체에 뿌리니까 범위설정이 중요하고 가끔 뿌려야한다.