기능
IP주소를 사용 -> IPv4, 서브넷 마스크, 게이트웨이 필요(멀리있는 곳과 통신하기위한 기본 설정)
3계층 프로토콜
일반적인 IP 주소 (classful, classless)
서브넷 마스크(서브넷팅 <==> 슈퍼네팅)
사설 IP와 공인 IP (+ classful = 현재 사용되고 있는 IPv4)
특수 IP
1) 네트워크 ID와 서브넷 마스크를 2진수로 변경
2) 서브넷 마스크를 1씩 증가시키면서 네트워크를 쪼갠다
3) 네트워크 ID에서 서브넷 마스크가 증가한 부분을 1로 꽉 찰때까지 1씩 증가시킨다
4) 쪼개진 각각의 네트워크의 네트워크 ID는 1씩 증가시킨 값 그대로
5) 쪼개진 각각의 네트워크의 브로드캐스트 주소는 뒷 부분을 전부 1로 채운다
6) 각 네트워크에서 사용 가능한 IP주소의ㅡ 범위는 네트워크 ID + 1, 브로드캐스트 주소 - 1
1. 211.100.10.0/24 네트워크를 각 네트워크 당 60개의 HOST가 사용할 수 있도록 subneting
네트워크 ID 0 : 11010011.01100100.00001010.00 000000
네트워크 ID 1 : 11010011.01100100.00001010.01 000000
네트워크 ID 2 : 11010011.01100100.00001010.10 000000
네트워크 ID 3 : 11010011.01100100.00001010.11 000000
서브넷 마스크 : 11111111.11111111.11111111.11 000000
1) subnet mask : 11111111.1111111.11111111.11000000, /26
2) subnet 개수 : 4개
3) HOST의 개수 : 64개
4) 마지막 subnet의 Network-ID : 211.100.10.192
5) 첫번째 subnet의 broadcast 주소 : 211.100.10.63
6) 두번째 subnet의 사용 가능한 IP 범위 : 211.100.10.65 ~ 211.100.10.126
2. 195.168.12.0/24 네트워크를 8개의 네트워크로 사용할 수 있도록 subneting
네트워크 ID 0 : 11000011.10101000.00001100.000 00000
네트워크 ID 1 : 11000011.10101000.00001100.001 00000
네트워크 ID 2 : 11000011.10101000.00001100.010 00000
네트워크 ID 3 : 11000011.10101000.00001100.011 00000
네트워크 ID 4 : 11000011.10101000.00001100.100 00000
네트워크 ID 5 : 11000011.10101000.00001100.101 00000
네트워크 ID 6 : 11000011.10101000.00001100.110 00000
네트워크 ID 7 : 11000011.10101000.00001100.111 00000
서브넷 마스크 : 11111111.11111111.11111111.111 00000
네트워크 ID 브로드캐스트주소 범위
0번 195.168.12.0 195.168.12.31 195.168.12.1 ~ 195.168.12.32
1번 195.168.12.32 195.168.12.63 195.168.12.33 ~ 195.168.12.62
2번 195.168.12.64 195.168.12.95 195.168.12.65 ~ 195.168.12.94
3번 195.168.12.96 195.168.12.127 195.168.12.97 ~ 195.168.12.126
4번 195.168.12.128 195.168.12.159 195.168.12.129 ~ 195.168.12.158
5번 195.168.12.160 195.168.12.191 195.168.12.161 ~ 195.168.12.190
6번 195.168.12.192 195.168.12.223 195.168.12.193 ~ 195.168.12.222
7번 195.168.12.224 195.168.12.255 195.168.12.225 ~ 195.168.12.254
3. 152.0.61.0/24 네트워크를 각 네트워크 당 100개의 HOST가 사용할 수 있도록 subneting
152.0.61.0/25 152.0.1.127
152.0.61.128/25 152.0.1.255
4. 189.101.7.0/24 네트워크를 각 네트워크 당 50개의 Host가 사용할 수 있도록 subnetiing
네트워크 ID 브로드캐스트주소 범위
0번 189.101.7.0/26 189.101.7.63/26 189.101.7.1/26 ~ 189.101.7.62/26
1번 189.101.7.64/26 189.101.7.127/26 189.101.7.65/26 ~ 189.101.7.126/26
2번 189.101.7.128/26 189.101.7.191/26 189.101.7.129/26 ~ 189.101.7.190/26
3번 189.101.7.192/26 189.101.7.255/26 189.101.7.193/26 ~ 189.101.7.254/26
5. 206.81.128.0/18 네트워크를 8개의 네트워크로 사용할 수 있도록 subneting
206 .81 .10 000 000.00000000
206 .81 .10 001 000.00000000
206 .81 .10 010 000.00000000
206 .81 .10 011 000.00000000
206 .81 .10 100 000.00000000
206 .81 .10 101 000.00000000
206 .81 .10 110 000.00000000
206 .81 .10 111 000.00000000
11111111.11111111.11 111 000.00000000
네트워크 ID 브로드캐스트주소 범위
0번 206.81.128.0 206.81.135.255 206.81.128.1 ~ 206.81.135.254
1번 206.81.136.0 206.81.143.255 206.81.136.1 ~ 206.81.143.254
2번 206.81.144.0 206.81.151.255 206.81.144.1 ~ 206.81.151.254
3번 206.81.152.0 206.81.159.255 206.81.152.1 ~ 206.81.159.254
4번 206.81.160.0 206.81.167.255 206.81.160.1 ~ 206.81.167.254
5번 206.81.168.0 206.81.175.255 206.81.168.1 ~ 206.81.175.254
6번 206.81.176.0 206.81.183.255 206.81.176.1 ~ 206.81.183.254
7번 206.81.184.0 206.81.191.255 206.81.184.1 ~ 206.81.191.254
ARP가 하는일
프로토콜 구조
통신 과정
프레임의 최소 최대 단위(참고)
실습 : wireshark
IPv4 Protocol
네트워크 상에서 데이터를교화하기 위한 프로토콜
데이터가 정확하게 전달될 것을 보장하지 않는다.
중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다.(악의적으로 이용되면 DoS 공격이 됨)
데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장함.
프로토콜 구조
보내는 Offset을 변경하여 DoS공격을 할 수 있다.
ICMP Protocol
Internet Control Message Protocol
네트워크 컴퓨터 위에서 돌아가는 운영체제에서 __오류메시지__를 전송 받는 데 주로 쓰인다.
프로토콜 구조의 Type과 Code를 통한 오류 메시지를 전송 받는다.
프로토콜 구조
라우팅 테이블…?
MAC address를 알지 못한다면 APR 프로토콜을 사용하여 MAC address를 알아낸다.(ARP 캐시 테이블, 라우팅 테이블 완성?)
다른 네트워크와 통신하는 과정
- encapsulation start
icmp request
0800 4d56 0001 0001
ipv4
4500 003c 12ab 0000 0801 0000 c0a8 0a0a c0a8 1414
ethernet
cccc cccc cccc aaaa aaaa aaaa 0800 (receive mac / send mac / ethernet)
- encapsulation end
ethernet
2222 2222 2222 1111 1111 1111 0800
ethernet
4444 4444 4444 3333 3333 3333 0800
- decapsulation start
ethernet
bbbb bbbb bbbb dddd dddd dddd 0800
ipv4
4500 003c 12ab 0000 0801 0000 c0a8 0a0a c0a8 1414
icmp request
0800 4d56 0001 0001
- decasulation end
- encapsulation start
icmp reply
0800 4d56 0001 0001
ipv4
4500 003c 12ab 0000 8001 0000 c0a8 1414 c0a8 0a0a
ethernet
dddd dddd dddd bbbb bbbb bbbb 0800 (receive mac / send mac / ethernet)
- encapsulation end
이후 생략...
ICMP는 마지막에만 붙인다.
라우팅 테이블 :: netstat -r
Offset = 페이로드 / 8 : 한정된 크기에서 큰 값을 표현하기 위하여
예제
1. 전송하려는 데이터 크기 [8937] 바이트
MTU [2300]바이트
데이터를 [2300] - 20 = [2280] 씩 조각화
MTU IPv4
패킷 | 플래그 | 오프셋(크기/8) | 데이터크기 |
---|---|---|---|
0번 | 1 | 0 | 2280 |
1번 | 1 | 285 | 2280 |
2번 | 1 | 570 | 2280 |
3번 | 0 | 855 | 2097 |
마지막 패킷의 페이로드 크기 : 2105 (ICMP + 데이터)
2. 전송하려는 데이터 크기 [2379] 바이트
MTU [980]바이트
데이터를 [980] - 20 = [960] 씩 조각화
MTU IPv4
패킷 | 플래그 | 오프셋(크기/8) | 데이터크기 |
---|---|---|---|
0번 | 1 | 0 | 960 |
1번 | 1 | 120 | 960 |
2번 | 1 | 240 | 960 |
3번 | 0 | 360 | 459 |
마지막 패킷의 페이로드 크기 : 467 (ICMP + 데이터)
3. 전송하려는 데이터 크기 [4618] 바이트
MTU [1370]바이트
데이터를 [1370] - 20 = [1350] 씩 조각화
MTU IPv4
패킷 | 플래그 | 오프셋(크기/8) | 데이터크기 |
---|---|---|---|
0번 | 1 | 0 | 1350 |
1번 | 1 | ? | 1350 |
2번 | 1 | ? | 1350 |
3번 | 0 | ? | 568 |
마지막 패킷의 페이로드 크기 : 576 (ICMP + 데이터)
4. 전송하려는 데이터 크기 [4800] 바이트
MTU [1500]바이트
데이터를 [1500] - 20 = [1480] 씩 조각화
MTU IPv4
패킷 | 플래그 | 오프셋(크기/8) | 데이터크기 |
---|---|---|---|
0번 | 1 | 0 | 1480 |
1번 | 1 | 185 | 1480 |
2번 | 1 | 370 | 1480 |
3번 | 0 | 555 | 360 |
마지막 패킷의 페이로드 크기 : 368 (ICMP + 데이터)
5. 전송하려는 데이터 크기 [4432] 바이트
MTU [1500]바이트
데이터를 [1500] - 20 = [1480] 씩 조각화
MTU IPv4
패킷 | 플래그 | 오프셋(크기/8) | 데이터크기 |
---|---|---|---|
0번 | 1 | 0 | 1480 |
1번 | 1 | 185 | 1480 |
2번 | 1 | 370 | 1472 |
마지막 패킷의 페이로드 크기 : 1480 (ICMP + 데이터)
전송 계층
종류 :: TCP, UDP
포트 번호(좀 더 자세한 학습이 필요하다)
Well-Known 포트, Registered 포트, Dynamic 포트 :: 절대적인 것은 아니다
netstat -ano :: PID 확인하기
서비스 :: 백그라운드에서 실행되는 프로그램
주소들의 사용(참고)
하는 일
구조
사용하는 프로그램
하는 일
구조
TCP를 이용한 통신과정 :: 연결 수립 과정(3-Way-HandShake)
TCP를 이용한 통신과정 :: 데이터 송수신 과정(HTTP, FTP와 같은 데이터를 포함한 통신)
TCP 상태전이도 :: LISTEN, ESTABLISHED
NAT(Networt Address Translation) 정의
Port Forwarding(Port Mapping) 정의
기본적인 부분
HTTP(HyperText Transport Protocol)
HTTP 1.0
HTTP 1.1
HTTP Request / Response
Request
scheme | ://host[:port] | [/path][?query] |
---|---|---|
요청형식 | IP주소 :포트번호 | /파일경로 DB쿼리 |
ftp | ://IP주소:포트 | /파일경로 DB쿼리 |
http | ://(IP주소:포트/도메인주소) | /파일경로 DB쿼리 |
Response
<!-- RESTful API -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
int result=0;
int no1 = 0;
int no2 = 0;
try {
no1 = Integer.parseInt(request.getParameter("num1"));
no2 = Integer.parseInt(request.getParameter("num2"));
no2 = Integer.parseInt(request.getParameter("kkk"));
} catch (Exception e) {
}
%>
<%= no1 + no2 %>