일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 너비우선탐색
- Algorithm
- programmers
- 백준
- Backtracking
- switch
- DFS
- 백트래킹
- 동적계획법
- Network
- 해시맵
- 브루트포스
- 스프링
- Spring
- DynamicProgramming
- HashMap
- dynamic programming
- BFS
- DP
- 해시
- 프로그래머스
- broadcast
- 깊이우선탐색
- 그리디
- 네트워크
- 구현
- 알고리즘
- greedy
- 이분탐색
- boj
- Today
- Total
옌의 로그
[Network] 외.끝.네.핵 (기초) | L3수준에서 외울 것들 본문
[Index]
(본 게시글은 인프런 외워서 끝내는 네트워크 핵심이론 - 기초 강의에 의해 작성되었습니다.)
IPv4주소의 기본 구조
- IP주소는 기본적으로8bit의 4자리 수로 이루어져 있다
- 0.0.0.0 ~ 255.255.255.255 이 사용가능 범위이고, 2^32 개로 총 43억개 정도이다
- IP주소에서 앞 24bit는 Network ID를 의미하고 뒤 8bit는 Host ID를 의미한다
- 사용할 수 없는 주소
- Host ID가 0인 것 (Subnet Mast가 되어버리므로)
- Host ID가 255인 것 (Broadcast 주소가 되어버리므로)
=> 그러므로 Host ID는 256개 중 위 2개를 제외한 254개를 사용할 수 있다
L3 IP Packet으로 외워라
- L3 계층에서 주고받는 데이터 단위를 Packet(패킷) 이라한다
- Header와 Payload로 나뉘며 Header 부분은 송장과 같은 역할 (출발지->도착지 정보), Payload 부분은 데이터 (내용물) 가 들어간다
- L3 IP Packet의 최대 크기는 MTU (Maximum Transmition Unit)로, 1500 bytes이다
Encapsulation과 Decapsulation
Encapsulation (캡슐화)
- Payload에 단계별로 Header를 붙여 하나의 Payload를 만드는 것
(마트료시카 인형처럼 차곡차곡 넣어서 포장하는 느낌이다) - Payload #3 (전송 계층)
> App(응용) 계층에서 받은 메세지를 TCP 헤더를 붙여 캡슐화하면 해당 데이터는 Segment로 네트워크 계층으로 전달된다 - Payload #2 (네트워크 계층)
> 전송 계층에서 받은 세그먼트에 IP 헤더를 붙여 캡슐화하면 해당 데이터는 Packet으로 데이터링크 계층으로 전달된다 - Payload #1 (데이터링크 계층)
> 네트워크 계층에서 받은 패킷에 Ethernet 헤더를 붙여 캡슐화하면 데이터는 Frame으로 물리 계층에 전달된다
> 데이터 링크 계층에서는 헤더뿐만 아니라 트레일러도 페이로드 다음에 붙게된다)
Decapsulation (역캡슐화)
- 캡슐화의 반대 작업을 통해 Header와 Payload를 분리
(포장된 것을 다시 꺼내는 것) - 데이터링크 계층
> 물리 계층에서 받은 Frame의 헤더와 트레일러를 구분해 나오는 Packet을 네트워크 계층에 전달 - 네트워크 계층
> 데이터링크 계층에서 받은 패킷의 헤더를 구분하여 나오는 Segment를 전송계층에 전달 - 전송 계층
> 네트워크 계층에서 받은 세그먼트의 헤더를 구분하여 나오는 메시지를 응용 계층에 전달
패킷의 생성과 전달
택배에 비유한 패킷 생성-전달-소멸 프로세스
- 상품 준비 및 포장 : 데이터 전송
- 택배박스에 송장 붙이기 (주소, 이름 정보 포함) : 출발-도착 정보를 담은 Header와 함께 Packet화
- 택배사 취합 및 배송시작 : Gateway를 지나 목적지로 이동
- 목적지 도착 : host 도착
- 수신인 확인 : Decapsulation
- 포장 해체 및 상품 꺼내기
계층구조에서 보는 패킷의 생성-전달-소멸
- 데이터 패킹 [H|Frame((H|Packet((H|Segment))))]
- Gateway를 지나 목적지로 이동
- 도착후 패킹된 내용물을 계층을 지나면서 다시 해체
계층별 데이터 단위
- L1 ~ L2 : Frame
- L3 - IP : Packet
- 최대 단위 MTU (1500bytes)
- L3 - TCP : Segment
- 최대 단위 MSS (1460bytes)
- L7 : Stream
- 단위라기 보다 데이터 덩어리 그 자체
- 시작은 있으나 끝이 없는 연속적으로 이어진 데이터
IP 헤더 형식
- Version (4bit) : TCP/IP 제품은 IPv4를 사용한다
- IHL (4bit) : IP 헤더의 길이를 32비트 단위로 나타낸다. 대부분의 IP헤더의 길이는 20byte
- Flags (3bit) : IP 라우터에 의해 분열되는 여부 + 원래 데이터의 분열된 조각이 더 있는 지 판단
- Fragment offset (13bit) : 8바이트 오프셋으로, 조각에 저장된 원래 데이터의 바이트 범위를 나타낸다
(단편화된 데이터를 다시 이어붙일 때 필요한 정보) - TTL (8bit) : 데이터를 전달할 수 없는 것으로 판단되어 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수를 나타낸다
> 1~255 사이의 값을 지정하며 라우터들은 패킷을 전달할 때마다 이 값을 하나씩 감소시킨다 - Protocol (8bit) : 상위 계층 프로토콜
서브넷 마스크와 CIDR
Subnet Mask
- IP주소를 Network ID / Host ID로 나누는데 사용되는 숫자 조합
- 어떤 IP주소라도 이진 표현으로 변환 후, AND 연산을 통해 서브넷 마스크를 통과시키게 되면 네트워크 ID와 호스트 ID의 경계를 찾을 수 있다
- IP주소와 같은 길이의 비트로 구성되며, 이진수(Binary)로 표현했을 때 Network ID는 1로, Host ID는 0으로 설정
> 1111 1111. 1111 1111. 1111 1111. 0000 0000
> 255.255.255.0
- 단일 네트워크의 크기가 너무 큰 경우, 특정 기기와의 통신을 시도할 때 브로드캐스트의 영향이 너무 크기 때문에 서브넷 마스크를 사용해 네트워크를 쪼개어 브로드캐스트 영역을 보다 작은 네트워크(서브넷)으로 나눌 수 있다
- 이를 통해 네트워크를 작은 그룹으로 조직화하고 관리할 수 있다
CIDR(Classless Inter-Domain Routing)
- 서브넷팅 표기법
- IP주소 뒤에 슬래시와 비트수를 숫자로 표기
- 필요에 따라 더 작은 서브넷을 생성하거나 더 큰 주소 공간을 할당할 수 있다
ex) 192.168.0.10/24- 슬래시 앞 부분은 네트워크 ID, /24는 서브넷 마스크 길이를 의미
- 24비트 서브넷 마스크는 첫 24비트가 네트워크 ID이고 나머지 8비트가 호스트 ID임을 의미
- 192.168.0.0 ~ 192.168.0.255 까지의 IP주소 범위를 의미하게 되는데, 여기서 네트워크 ID(호스트 ID가 0인것. 서브넷마스크), 브로드캐스트 주소를 제외하고 실제로 호스트에 할당할 수 있는 IP 주소 범위는 192.168.0.1 ~ 192.168.0.254가 된다
Broadcast IP주소
- Broadcast는 모든 자리가 다 1로 이루어진 주소이므로 IP주소에선 마지막 8bit의 Host ID부분이 1로 이루어진 주소를 말한다
> ex) 192.168.0.255
- Network ID : 192.168.0
- Host ID : 255
- 해당 Network에서 방송주소로 사용됨
만약 IP주소가 192.168.0.10인 pc가 192.168.0.255로 데이터를 보내게 되면, 해당 패킷이 L2 Distribution에 도착하는 순간 같은 네트워크(192.168.0 대역) 안에 있는 host들에게 전부 퍼지게 된다. 위 이미지로 보면 pc1이 보낸 데이터를 pc 2,3,4,5,6 추가로 gateway까지 받게된다
Host 자신을 가리키는 IP주소
127.0.0.1
- Loopback Address 또는 Localhost 라고 부른다
- 네트워크 통신시 목적지 IP주소를 127.0.0.1로 설정하게 되면, 출발 host의 네트워크 계층은 이 패킷을 외부로 전송하지 않는다. 전송하지 않고 고스란히 자신이 다시 받은 것처럼 처리하여, 상위 계층으로 올려 보낸다.
- 자신이 송신한 패킷을 그대로 수신한 효과
TTL과 단편화
TTL (Time to live)
- 데이터의 유효 기간을 나타내기 위한 방법
> 패킷이 무한으로 순환하는 것을 막는 역할을 함 - 데이터가 라우터를 옮겨다니면 TTL 값이 줄어드는데, 목적지에 도착하지 못하게 되면 라우터가 해당 패킷을 버린다
단편화 (Fragmentation)
- 데이터가 프레임으로 캡슐화될 때, 데이터의 전체크기가 MTU보다 작아야 하므로, 데이터 링크 계층에 전달되기 전에 작은 크기로 분할하는 것
- 단편화된 패킷은 수신측 엔드포인트에서 조립한다
- 단편화가 발생하는 경우는, VPN(IPSec)이 적용되었을 때 발생한다.
*IPSec : 통신과정 도중, 패킷을 도청하거나 위조하는 악성 유저들로부터 패킷을 보호하기 위해 사용하는 보안 프로토콜
인터넷 설정 자동화를 위한 DHCP
인터넷 사용 전에 해야 할 설정은 IP주소, Subnet mask, Gateway IP주소, DNS 주소가 있다. 이때, DHCP를 활용하면 자동으로 IP주소를 할당받을 수 있다.
DHCP (Dynamic Host Configuration Protocol)
- 네트워크의 컴퓨터 및 기타 장치에 IP 주소를 할당하기 위한 표준화된 프로토콜
- DHCP 체계는 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성된다
- DNS 서버 주소 또는 기본 게이트웨이 주소와 같은 네트워크의 장치에 다른 정보를 제공할 수도 있다
(핵심은 내가 사용할 IP주소를 서버가 알려주는 것)
- host가 네트워크에 연결되면 IP주소를 얻기 위해 DHCP 요청을 보낸다 (브로드캐스트 패킷이 나감)
- 그러면 네트워크의 DHCP 서버가 장치가 사용할 수 있는 IP주소로 응답을 보낸다
ARP
ARP (Address Resolution Protocol)
- IP주소를 MAC주소와 매칭 시키기 위한 프로토콜
(IP주소로 MAC주소를 알아내려 할 때 활용된다) - 보통의 경우 PC를 부팅하면 Gateway의 MAC주소를 찾아내기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC주소를 알 수 있다
- 같은 IP 대역을 공유하는 LAN에서 단말간 통신을 하기 위해
- L2에서의 통신에서 사용자는 IP주소를 목적지로 지정하지만 실제로는 MAC주소를 이용해 목적지를 찾는다
- ARP Request 또한 브로드캐스트
- 보통 캐싱된다
예시로, host가 네이버와 통신하려고 할 때 host는 목적지를 gateway의 ip주소로 잡지만, 실제 목적지는 gateway의 ip주소와 함께 MAC주소를 목적지로 지정하고 이를 활용해 전달한다.
Ping과 RTT
Ping
- Ping 유틸리티는 특정 Host에 대한 RTT를 측정할 목적으로 사용된다
- ICMP(Internet Control Message Protocol) 프로토콜을 이용한다
- DoS(Denial of Service) 고역용으로 악용되기도 한다
- ping을 서버에 미친듯이 날려서 서버가 재기능을 못하게 하는 것
RTT
- Round Trip Time 의 약자로, 서버와의 통신(동기화) 시간을 의미
- ping을 보냈을 때 나오는 응답 속도 (보통 ms 단위이다)
- 거리에 비례하지 않고, 네트워크 속도에 영향을 받는다. 하지만 물리적으로 거리가 멀다면, 네트워크 속도가 빠르긴 쉽지 않다
'스터디 > 네트워크' 카테고리의 다른 글
[Network] 외.끝.네.핵 (기초) | L2수준에서 외울 것들 (0) | 2024.02.12 |
---|---|
[Network] 외.끝.네.핵 (기초) | Internet 기반 네트워크 입문 (1) | 2024.02.11 |
[Network] 네트워크 기본 개념정리 (프로토콜, LAN, IP, DNS 등등) (0) | 2023.02.09 |
[Network] 쿠키(Cookie), 세션(Session) (0) | 2023.01.09 |