내부망과 외부망은 네트워크의 범위와 사용 목적에 따라 구분되는 개념
MAC주소 = 물리적 주소 = 2계층 주소
8C-B0-E9-1D-B0-8B
경우 앞에 3자리 8C-B0-E9
는 제조사 식별번호, 뒤에 3자리 1D-B0-8B
는 일련번호# 컴퓨터의 모든 네트워크 인터페이스 정보 표시
$ ipconfig /all
Windows IP 구성
호스트 이름 . . . . . . . . : DESKTOP-FIM6H62
주 DNS 접미사 . . . . . . . :
노드 유형 . . . . . . . . . : 혼성
IP 라우팅 사용. . . . . . . : 아니요
WINS 프록시 사용. . . . . . : 아니요
이더넷 어댑터 이더넷:
미디어 상태 . . . . . . . . : 미디어 연결 끊김
연결별 DNS 접미사. . . . : pxelinux
설명. . . . . . . . . . . . : Realtek PCIe GbE Family Controller
# 총 6자리로 16진수로 표현
# 앞에 3자리 8C-B0-E9 제조회사 식별번호
# 뒤에 3자리 1D-B0-8B는 일련번호
# 이 Mac Address 매우 중요 ***
물리적 주소 . . . . . . . . : 8C-B0-E9-1D-B0-8B
DHCP 사용 . . . . . . . . . : 예
자동 구성 사용. . . . . . . : 예
IP주소 = 논리적 주소 = 3계층 주소
192.168.1.10
인 경우 192.168.1
의 10번째 IP 라는 뜻&
연산자로 처리하면 네트워크 아이디 192.168.1.10
와 서브넷 마스크255.255.255.0
를 &
연산하면 다음과 같다.192.168.1.0
가 된다.애플리케이션 식별번호로 프로그램이 실행될 때 해당 프로그램에 부여되는 번호
Q. Chrome에 탭이 3개인 경우 1개의 프로그램이 돌아가는건지 3개의 프로그램이 돌아가는건지?
A. 답은 3개. 왜? 각각의 포트 번호가 붙어있고, 한 탭을 닫는다고 다른 탭이 모두 닫히지 않기 때문이다.
0번을 제외하고 총 1~65535번까지 사용 가능
C:\Windows\System32\drivers\etc\services
시스템에서 포트번호를 관리하는 파일
$ netstat [options]
options :
-a : 모든 연결과 리스닝 포트
-n : 주소와 포트 번호를 숫자로 표시
-l : 리스닝 중인 포트
-t : TCP 연결 포트 확인
-u : UDP 연결 포트 확인
-p : 프로세스 ID(PID)와 프로그램 이름 확인
-o : 연결되어 있는지 여부 및 시간 확인
-r : 라우팅 테이블 확인
-c : 실행한 명령을 초 단위로 재실행 (ex. -c 2는 2초 단위로 명령을 재실행)
# LISTEN 상태의 네트워크 연결 찾기
$ netstat -nap | grep LISTEN
# 특정 포트가 사용 중인지 확인
$ netstat -an | grep [포트번호]
💡 컴퓨터는 단독주택이 아니고, 아파트다.
192.168.1.10:21 인 경우
192.168.1.10 까지는 아파트 입구==동인거고, 포트번호 21번이 호수다.
💡 만약 아파치 서버 포트번호를 5000번으로 바꿔도 되나?
된다. 왜? 클라이언트에게 통보만 해주면 되기 때문에
💡 네이트온 vs 카카오톡 등 메신저들은 포트번호 할당되어야 함. IANA라는 기관에서 포트번호를 관할. 여기서 포트번호는 Registered Port를 말한다.
www.naver.com
주소가 있다면구분 | 클라이언트 | 서버 |
---|---|---|
IP Address | 192.168.1.10 | 192.168.1.20 |
Mac Address | 1111.2222.3333 | 3333.4444.5555 |
FQDN Address | - | www.test.com |
문자 주소를 기반으로 IP주소를 찾아주는 기능
IP주소를 기반으로 문자 주소를 찾아주는 기능
$ ipconfig /displaydns
Windows IP 구성
checkappexec.microsoft.com
----------------------------------------
데이터 이름 . . . . . : checkappexec.microsoft.com
데이터 유형 . . . . . : 5
TTL(Time To Live) . : 1
데이터 길이 . . . . . : 8
섹션 . . . . . . . : 응답
CNAME 레코드 . . . . : wd-prod-ss.trafficmanager.net
데이터 이름 . . . . . : wd-prod-ss.trafficmanager.net
데이터 유형 . . . . . : 5
TTL(Time To Live) . : 1
데이터 길이 . . . . . : 8
섹션 . . . . . . . : 응답
CNAME 레코드 . . . . : wd-prod-ss-as-southeast-3-fe.southeastasia.cloudapp.azure.com
데이터 이름 . . . . . : wd-prod-ss-as-southeast-3-fe.southeastasia.cloudapp.azure.com
데이터 유형 . . . . . : 1
TTL(Time To Live) . : 1
데이터 길이 . . . . . : 4
섹션 . . . . . . . : 응답
(호스트) 레코드 . . . : 20.6.0.192
$ ipconfig /flushdns
Windows IP 구성
DNS 확인자 캐시를 플러시했습니다.
$ ipconfig /displaydns
Windows IP 구성
IP주소를 기반으로 MAC주소를 찾아주는 기능
ARP request | ARP reply |
---|---|
질의 패킷 (송신지가 수신지의 MAC주소를 조회하기 위함) | 응답 패킷 |
브로드캐스트. 방식으로 운영 (MAC주소를 모르니까) | 유니캐스트 방식으로 운영 |
request를 주고 reply를 받으면 arp 캐시 테이블에 저장한다.
왜? 다음에 다시 상호작용할 때 또 request를 던지면 비효율적이기 때문에
$ arp -a # ARP Cache Table
인터페이스: 172.30.1.94 --- 0x3
인터넷 주소 물리적 주소 유형
172.30.1.50 08-00-27-18-eb-52 동적
172.30.1.254 b4-a9-4f-66-81-2a 동적
172.30.1.255 ff-ff-ff-ff-ff-ff 정적
224.0.0.2 01-00-5e-00-00-02 정적
224.0.0.22 01-00-5e-00-00-16 정적
224.0.0.251 01-00-5e-00-00-fb 정적
224.0.0.252 01-00-5e-00-00-fc 정적
239.255.255.250 01-00-5e-7f-ff-fa 정적
255.255.255.255 ff-ff-ff-ff-ff-ff 정적
인터페이스: 192.168.56.1 --- 0x11
인터넷 주소 물리적 주소 유형
192.168.56.255 ff-ff-ff-ff-ff-ff 정적
224.0.0.2 01-00-5e-00-00-02 정적
224.0.0.22 01-00-5e-00-00-16 정적
224.0.0.251 01-00-5e-00-00-fb 정적
224.0.0.252 01-00-5e-00-00-fc 정적
239.255.255.250 01-00-5e-7f-ff-fa 정적
255.255.255.255 ff-ff-ff-ff-ff-ff 정적
MAC주소로 IP주소를 찾아주는 기능
문자주소 → MAC 주소를 찾아주는 프로토콜은 없다.
왜? 문자주소가 필수 주소가 아니기 때문에
클라이언트가 서버를 호출하는 것은 등기우편을 보내는 것과 같다.
편지 내용(전송데이터 get www.test.co.kr)
편지를 전달하기 위해선 발신자 주소와 수신자 주소를 모두 작성해야한다.
255.255.255.255
(All) ⇒ Local Broadcast192.168.1.255
⇒ Directed BroadcastFFFF.FFFF.FFFF
FFFF.FFFF.FFFF
인 경우 브로드캐스트 패킷으로 인지할 수 있다.0100.5E
여도 멀티캐스트가 아닌 경우는? MAC주소는 25비트가 일치해야하는데 25비트가 아닌 경우가 있기 때문에 되도록 수신지IP로 멀티캐스트임을 판단하자Q. 192.168.1.255 ⇒ 192.168.1.0 에 있는 여러분(All)은 멀티캐스트인가?
A. 아니다. IP주소의 첫번째가 224~239로 시작되지 않기 때문에
# ARP Cache Table
$ arp -a
인터페이스: 172.30.1.94 --- 0x3
인터넷 주소 물리적 주소 유형
172.30.1.50 08-00-27-18-eb-52 동적
172.30.1.254 b4-a9-4f-66-81-2a 동적
# 다이렉트 브로드캐스트----------------------------
172.30.1.255 ff-ff-ff-ff-ff-ff 정적
# 멀티캐스트-------------------------------------
224.0.0.2 01-00-5e-00-00-02 정적
224.0.0.22 01-00-5e-00-00-16 정적
224.0.0.251 01-00-5e-00-00-fb 정적
224.0.0.252 01-00-5e-00-00-fc 정적
239.255.255.250 01-00-5e-7f-ff-fa 정적
# 브로드캐스트-----------------------------------
255.255.255.255 ff-ff-ff-ff-ff-ff 정적
인터페이스: 192.168.56.1 --- 0x11
인터넷 주소 물리적 주소 유형
# 브로드캐스트-----------------------------------
192.168.56.255 ff-ff-ff-ff-ff-ff 정적
# 멀티캐스트-------------------------------------
224.0.0.2 01-00-5e-00-00-02 정적
224.0.0.22 01-00-5e-00-00-16 정적
224.0.0.251 01-00-5e-00-00-fb 정적
224.0.0.252 01-00-5e-00-00-fc 정적
239.255.255.250 01-00-5e-7f-ff-fa 정적
# 브로드캐스트-----------------------------------
255.255.255.255 ff-ff-ff-ff-ff-ff 정적
- 멀티캐스트나 브로드캐스트 주소는 보통 수신용으로 쓰인다.
- 멀티캐스트나 브로드캐스트는 ARP나 DNS를 사용하지 않는다 → 자동변환되기 때문에.
구분 | Router | Switch | Hub |
---|---|---|---|
계층 | 3계층 장비 | 2계층 장비 | 1계층 장비 |
경로DB | Routing Table | MAC Adress Table(MAT) | X |
데이터 전송방식 | 포워딩 방식 | 포워딩 방식, 플로딩 방식 | 플로딩 방식 |
송신지IP(192.168.1.10)―수신지IP(192.168.3.10)
L2 Switch에는 없는 멀티레이어 Switch 의 기능에는 라우팅이 있다.
출발지 → 목적지
가는 동안 3계층 장비 거칠 떄마다 L2헤더 변경SIP | DIP | SMAC | DMAC | |
---|---|---|---|---|
PC1→RA | 21.7 | 34.250 | 666 | 2222 목적지의 MAC Address를 알 수 없는 경우 게이트웨이의 MAC Address(GMA)를 사용 |
RA→RB | 21.7 | 34.250 | 9999 | 3333 |
RB→FTP | 21.7 | 34.250 | 7777 | 5555 |
SourceIP주소와 DestinationIP는 바뀌지 않는다.
왜? 산업표준주소기 때문에 어떤 장비든 이해할 수 있기 때문에
목적지가 외부망이면 MAC주소 모름 → 게이트웨이 사용해야한다.
외부망에 데이터 전송이 실패하면 게이트웨이에서 실패한 것
PAT와 NAT의 차이점? NAT는 IP주소만 변환되지만 PAT는 IP주소와 포트번호가 변환된다.
Packet Tracer 이용
echo-request
echo-reply
$ arp -a
Internet Address Physical Address Type
# ping echo-request
$ ping 192.168.1.20
Pinging 192.168.1.20 with 32 bytes of data:
# ping echo-reply
Reply from 192.168.1.20: bytes=32 time=107ms TTL=128
Reply from 192.168.1.20: bytes=32 time=62ms TTL=128
Reply from 192.168.1.20: bytes=32 time=62ms TTL=128
Ping statistics for 192.168.1.20:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 62ms, Maximum = 107ms, Average = 77ms
$ arp -a
Internet Address Physical Address Type
192.168.1.20 00d0.babc.ae1d dynamic
$ ping 192.168.5.10
Pinging 192.168.5.10 with 32 bytes of data:
Reply from 192.168.1.254: Destination host unreachable.
Reply from 192.168.1.254: Destination host unreachable.
Reply from 192.168.1.254: Destination host unreachable.
Reply from 192.168.1.254: Destination host unreachable.
Ping statistics for 192.168.5.10:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
$ arp -a
Internet Address Physical Address Type
192.168.1.20 00d0.babc.ae1d dynamic
192.168.1.254 0001.9684.c001 dynamic
arp 캐시 테이블에서 외부정보는 기록되지 않지만 게이트웨이 MAC주소가 있다면 외부로 나가려고 시도했다는 것으로 판단한다.
$ ping 192.168.3.2
Pinging 192.168.3.2 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.3.2:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Request timed out == 정해진 시간에 Reply가 안 왔다. NOT Dead
Switch>en # enable
Switch#sh mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0000.0c54.dc12 DYNAMIC Fa0/2
1 0001.9684.c001 DYNAMIC Fa0/1
1 00d0.babc.ae1d DYNAMIC Fa0/3
R1>en
R1#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, Serial0/0
1단계
수신지 IP 주소 조회
2단계
수신지 IP를 알아내면 송신자 서브넷 마스크를 이용하여 수신지가 내부망인지 외부망인지 확인
3단계
ARP로 수신지 MAC주소 조회
4단계
트래픽 전송
ipconfig /displaydns
\windows\system.32\drivers\etc\hosts
⇒ 이 모든 것을 누가할까? 운영체제
1단계
DNS를 이용해 수신지 IP 주소 조회
2단계
수신지 IP를 알아내면 송신자 서브넷 마스크를 이용하여 수신지가 내부망인지 외부망인지 확인
3단계
게이트웨이의 MAC주소 조회
4단계
Media Translation방법으로 트래픽 전송
개방형 시스템(Open System)간의 상호연결하기 위한 7가지 통신 기능이 필요한데 이 7개 기능에 대해 국제 표준 기구 ISO가 만든 모델을 OSI 7 참조모델이라고 한다.
숫자가 ↑상위 모델 ↓하위 모델
아 ┌───7계층 Application
파 ├───6계층 Presentation
서 ├───5계층 Session -- 인증서
탈 ├───4계층 Transport -- middleware 상위이자 하위계층
났 ├───3계층 Network
다 ├───2계층 DataLink
피 └───1계층 Physical
앱 해킹 7,6계층
서버 해킹 5,4,3계층
네트워크 3,2,1계층
개발 상위3계층만
관제 전 계층
내가 서비스를 받으려고 하는 서버가 정상적으로 운영하고 있는지, 내가 원하는 서비스를 제공하는지 확인해주는 층
세션과 트랜스포트는 은행 대출과 같다.
영업일, 영업시간에 은행에 가더라도 대출을 무조건 받을 수는 없다. 왜? 심사를 해야하기 때문에. 여기서 심사는 세션 계층을 말하고 은행의 서비스 개시 상태는 트랜스포트 계층을 말한다.
계층은 독립적이지 않다.
- 7계층은 1~6계층의 기능을 모두 갖고 있다.
- 기능이 높으면 낮춰서 사용가능 스위치가 없는 경우 라우터를 스위치처럼 사용가능
- HUB는 1계층 기능만 있어도 가능
- PC는 7계층이다. PC를 사용하기 위해서는 앱이 필요하기 때문에
- 계층이 높을수록 속도가 저하된다.
⇒ 중계지역에서는 계층을 높이지 않는 것이 좋다.
페이로드되면 캡슐화가 진행된다.
중계장비는 5,6,7은 안 본다. 굳이 볼 필요가 없다.
TCP/UDP 상관없이 3계층의 IP헤더와 2계층의 이더넷 헤더가 붙는다.
header
와 trailer
header
: 원본 데이터 앞에 붙는 제어 정보 trailer
: 원본 데이터 뒤에 붙는 제어 정보송신자측-캡슐화
, 수신자-역캡슐화
TCP/IP
란?미국방성에서 제작 이후 대학에서 사용내 컴퓨터는 TCP/IP를 사용하기 좋도록 설정되어 있다.
우리가 사용하는 어플리케이션은 765,운영체제는 34,LAN카드는 12
어떤 프로토콜을 사용하냐에 따라 TCP 또는 UDP 헤더가 부착된다.
와이어샤크에서 첫번째 프레임은 메타 정보로만 구성되어 있다.
[]
: 메타정보 = 와이어샤크가 분석한 속성 정보(오리지널 데이터x)
수신지
송신지
싵고 가는 데이터 Type: IPv4 (0x0800)
원본 Port
목적지 Port
싵고 가는 데이터 Destination Port:80
Frame1 제외
>
가 2개만 나오는 이유는?
ARP가 3계층 프로토콜이기 때문에
Preamble
과 SFD
를 생략한다
HTTP가 TCP로 운영되는 이유? 신뢰성 때문에, 데이터 전달
: Stream-Oreiented Transport Protocol
TCP
framine 전송 전에 참여하는데 전송 후에 참여하는지
Established : 사앙의 선이 응답했다.
세션수립 == 채널이 열렸다.
netstat -an활성 연결
``
```bash
프로토콜 로컬 주소 외부 주소 상태
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49668 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49670 0.0.0.0:0 LISTENING
TCP 172.30.1.94:139 0.0.0.0:0 LISTENING
TCP 172.30.1.94:49408 20.198.118.190:443 ESTABLISHED
TCP 172.30.1.94:49897 173.194.174.188:5228 ESTABLISHED
TCP 172.30.1.94:51571 104.18.22.107:443 ESTABLISHED
TCP 172.30.1.94:51584 104.18.22.107:443 ESTABLISHED
TCP 172.30.1.94:51587 104.18.22.107:443 ESTABLISHED
TCP 172.30.1.94:51701 146.75.49.51:443 ESTABLISHED
TCP 172.30.1.94:51731 18.64.8.93:443 ESTABLISHED
ACK넘버가 다음의 Sync넘버
데이터는 명시되지 않는다.
HTTP
잘 받았다고 응답해주는 건 TCP
: 서로의 상태 확인
ACK(Acknowledgment Number)
로 확인한다.SN(Sequence Number)
로 확인한다.만약 3개를 전송했을 때 1개가 실패했을 때 기본적으로 3개를 모두 다시 보내야 한다.
TCP
- Options
- TCP Options
확인
window: 8192
ACK없이 보낼 수 있는 바이트
TCP Option - SACK permitted
실패 시 선택된 ACK만 보내라
window size:0바이트
수신금지! ⇒ 트래픽 보내면 폐기(Drop) 된다.
# 프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시
$ netstat -a
네트워크 연결상태 | |
---|---|
closed | 채널 닫힘 |
Listen | 채널 열림 |
establish | |
-- | |
close wait | |
last ack | |
time wait |
장시간 close_wait에서 last_ack로 넘어가지 않으면 서비스 상태가 정상적이지 않다는 의미
서버가 먼저 종료되어야 클라이언트가 종료된다.
클라이언트→서버에게 ACK를 전달하는 도중 문제가 발생하면 서버는 클라이언트에게 할당되어 있는 리소스를 계속 갖고 있게 되면 오버헤드가 발생될 수 있다.
⇒ 세션이 연결된줄 알고 통로를 열어놓기 때문에
Source port address
: 송신지
Destination port address
: 수신지
Sequence number
: 처리되는 순번
Acknowledgment number
:
HELEN
: Header Legnth 헤더 총 길이
Reserved
:
urg
: 시퀀스보다 긴급하게 전송해야하는 값일 경우, 우선순위 변경(Urgent Pointer)⇒ 숫자가 작은 것부터⇒ 요즘에는 사용x
ack
ACK Number
psh
: payload된 데이터가 MSS 보다 작을 때 내보낼 때 사용
rst
: 비정상 종료(Reset)
fin
: 정상 종료(Finish)
widnow size
: ACK없이 연속해서 보낼 수 있는 데이터 양
Checksum
: 오류검증
Urgent pointer
: 우선순위 설정
: Message-Oriented Transport Protocol
VER
: 버전명HLEN
: 헤더 길이Service type
: 전송하려는 데이터의 서비스 품질을 명시(=요구항목)Total length
: 헤더의 총 길이Identification
: 고유 번호Flags
: 0 = No fragment, 1=More fragmentsFragmentation offset
: 상대번호Protocol
: \window\system32\drivers\etc\protocol
에서 설정가능Header Checksum
: 오류검출 코드: LAN카드에는 한 번에 밖으로 보낼 수 있는 최대 데이터 단위 - 사용하는 LAN카드에 따라 전송할 수 있는 최대 데이터 단위가 다르다.
만약 애플리케이션에서 보내려고하는 데이터가 4000byte, LAN card에서 보낼 수 있는 데이터는 1500byte인 경우 나머지 데이터는 폐기된다.
데이터가 폐기되지 않기 하기 위해서는단편화
작업이 필요하다.단편화
는 3~4계층에서 진행된다.
: 데이터를 분할하는 작업
App. 4000 byte
.
.
4계층 - 단편화할 수도 있고 안할 수도 있다.
3계층 - 반드시 단편화 해야 한다.
LAN. 1500 byte
데이터는 1500 byte(A.1.1)
1500 byte(A.2.1)
1000 byte(A.3.0)
으로 분할된다.
태그 (A.x.x)
를 붙이는 이유? 분할되어 들어온 데이터를 수신자 쪽에서 다시 재조립해야하기 때문에
Q. 단편화에 관련된 필드는 무엇인가?
A. (1) Identification (2) Flags (3) Fragmentation offset
: 목적지까지 통과하기까지 통과하는 최대 홉(hop) 수 지정
TTL값이 너무 작은 경우 목적지에 도착하기 전에 폐기되버린다.
TTL값이 너무 큰 경우
C:\Users\USER>netsh interface ipv4 show interfaces
색인 메트릭 MTU 상태 이름
--- ---------- ---------- ------------ ---------------------------
1 75 4294967295 connected Loopback Pseudo-Interface 1
3 35 1500 connected Wi-Fi
9 5 1500 disconnected 이더넷
12 25 1500 disconnected 로컬 영역 연결* 9
10 25 1500 disconnected 로컬 영역 연결* 10
14 65 1500 disconnected Bluetooth 네트워크 연결
17 25 1500 connected 이더넷 2
✅ 사이즈를 변경할 수 있는 랜 카드인지 파악 해야한다.
IP header filed ==> 레지스트리 편집기, netsh
MTU 추적파일
C:\Windows\System32\drivers\etc\protocol
Header checksum
에 넣는다.checksum
만 제외하고 다 더했을 때 송신자 측이 보내준 checksum
과 동일한지 비교한다.Version + ToS
Total Length
ID
Flags
TTL + Protocol
TCP, UDP, IP, Ethernet의 Checksum이 모두 다르다.
: Maximun Segment Size
MSS
라는 말을 쓴다. 계층 | 데이터 | 헤더 |
---|---|---|
7 | Message | |
4 | Segment (=Datastream) | Port |
3 | Packet | IP |
2 | Frame (=Datagram) | MAC |
1 | Bit |
3계층에서 단편화를 하지 않게 하기 위한 세그먼트의 크기
MTU = (IP Header + TCP Header + IP data) == 1500 byte(Ethernet Header를 제외한 값)
실제 전송하는 데이터 길이 = 1500(MTU)
+ 18(Ethernet Header+Trailer)
= 1518 byte
Etherne LAN = 1500 byte
IP Header = 20
TCP Header = 50
MSS = 1500 - 20(IP) - 50(TCP) = 1430
Ethernet Header 14 byte
FCS 4 byte
IP
의 단점을 보안하기 위해 등장IP Header
에 기생해서 살아간다.IP Header
를 조작하면서 통신이 되는지 안되는지 테스트 해주는 프로토콜(7계층이 있는 것처럼 테스트)
Protocol : ICMP
부분이 SAP
이다.기본 게이트웨이 - 172.30.1.254
ping
# ping 개수 지정
C:\Users\USER>ping -n 1 172.30.1.254
Ping 172.30.1.254 32바이트 데이터 사용:
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254에 대한 Ping 통계:
패킷: 보냄 = 1, 받음 = 1, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 0ms, 평균 = 0ms
# ping 무한으로 보내기
C:\Users\USER>ping -t 172.30.1.254
Ping 172.30.1.254 32바이트 데이터 사용:
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=4ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=2ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
# ping 보낼 때 같이 보낼 데이터 크기 지정
C:\Users\USER>ping -l 500 172.30.1.254
Ping 172.30.1.254 500바이트 데이터 사용:
172.30.1.254의 응답: 바이트=500 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=500 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=500 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=500 시간<1ms TTL=64
172.30.1.254에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 1ms, 평균 = 0ms
ping으로 보낸 데이터 단편화 확인
ping -f
단편화x
#
C:\Users\USER>ping -f 172.30.1.254
Ping 172.30.1.254 32바이트 데이터 사용:
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간<1ms TTL=64
172.30.1.254의 응답: 바이트=32 시간=1ms TTL=64
172.30.1.254에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 1ms, 평균 = 0ms
4000byte를 단편화하지 않고 보내려고 할 때 ping 실패
C:\Users\USER>ping -l 4000 -f 172.30.1.254
Ping 172.30.1.254 4000바이트 데이터 사용:
패킷 조각화가 필요하지만 DF가 설정되어 있습니다.
패킷 조각화가 필요하지만 DF가 설정되어 있습니다.
패킷 조각화가 필요하지만 DF가 설정되어 있습니다.
패킷 조각화가 필요하지만 DF가 설정되어 있습니다.
172.30.1.254에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 0, 손실 = 4 (100% 손실),
tracert
경로 추적
형식 : tracert 게이트웨이 번호
C:\Users\USER>tracert 203.241.132.34
최대 30홉 이상의
nic.samsung.co.kr [203.241.132.34](으)로 가는 경로 추적:
1 1 ms <1 ms <1 ms 172.30.1.254
2 10 ms 122 ms * 121.136.10.1
3 4 ms 1 ms 2 ms 125.141.249.22
4 * * * 요청 시간이 만료되었습니다.
5 * * * 요청 시간이 만료되었습니다.
6 7 ms 3 ms 3 ms 112.174.9.82
7 4 ms 3 ms 3 ms 203.229.222.14
8 4 ms 4 ms 5 ms u153.ppp80.samsung.co.kr [157.197.80.153]
9 8 ms 8 ms 7 ms 112.106.53.2
10 4 ms 4 ms 3 ms nic.samsung.co.kr [203.241.132.34]
추적을 완료했습니다.
ping -i
: IP헤더의 TTL 값을 변경
C:\Users\USER>ping -i 3 203.241.132.34
Ping 203.241.132.34 32바이트 데이터 사용:
125.141.249.22의 응답: 전송하는 동안 TTL이 만료되었습니다.
125.141.249.22의 응답: 전송하는 동안 TTL이 만료되었습니다.
125.141.249.22의 응답: 전송하는 동안 TTL이 만료되었습니다.
125.141.249.22의 응답: 전송하는 동안 TTL이 만료되었습니다.
203.241.132.34에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
L2 PDU = Frame
같은 이더넷지만 2개의 프레임이 돌아간다.
1. host 발생 프레임 ⇒ DIX Frame(type)
2. 장비 발생 프레임 ⇒ IEEE 802.3 frame(Length)
DIX Frame(type)
wireshark
는 Preamble
부분을 감춰놓는다. MAC주소를 모르는 경우
1. ARP 캐시 테이블 확인
2. ARP 캐시테이블에 주소가 없는 경우 브로드캐스트로 request
3. 브로드캐스트로 request
됐으므로 클라이언트에서 일단 받는다.
4. 역캡슐화로 ARP Header
부분에 Destination IP
확인
5. Destination IP
가 자신을 향한 것이 맞다면 Source IP
로 reply
를 보내면서 Source IP
를 자신의 ARP 캐시 테이블
에 추가한다.
⇒ 왜? 다시 통신해야되는 경우 다시 request
-reply를 해야한다면 비효율적이기 때문에 효율적으로 통신하기 위해서 추가한다.
Q. 만약 내가 request를 보낸 적이 없는데 reply가 온 경우 역캡슐화 후 ARP캐시 테이블에 저장할까? 안 할까?
A. request 한 적 있건 없건 일단 역캡슐화 후 ARP 캐시 테이블에 저장한다. 이 부분으로 침투 시도가 있을 수 있다.
1.10(ip) 4444(mac)
request[ffff.ffff.ffff
| 1111.222.3333
| 0x0806
| 1111.1111.1111/192.168.1.10]
IP는 동일한데 LAN카드 교체된 경우 MAC주소가 변경된다.
다른 컴퓨터에서 MAC주소가 변경된 컴퓨터에 ARP 캐시 테이블 업데이트용으로 ARP Request를 보내기도 한다.