반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jenkins
- 오블완
- 데이터베이스
- 42seoul
- swift
- Xcode
- 오라클
- springboot
- MySQL
- AI
- CI
- 티스토리챌린지
- 스프링
- JPA
- IOS
- 스프링부트
- 리눅스
- DBMS
- sql
- 네트워크
- CD
- 프로그래밍언어론
- 소켓
- Spring
- 인공지능
- 다이어리
- libasm
- javascript
- 아이패드다이어리
- 스프링부트 웹 소켓
Archives
- Today
- Total
Hi yoahn 개발블로그
[네트워크 분석 실습] 실습 정리 본문
반응형
1. Wireshark
Display filter expressions
English | C-like | Description | Example |
eq | == | Equal | ip.src==10.0.0.5 |
ne | != | Not Equal | ip.src != 10.0.0.5 |
gt | > | Greater than | frame.len > 10 |
lt | < | Less than | frame.len < 128 |
ge | >= | Greater than or Equal to | frame.len >= 0x100 |
le | <= | Less than or equal to | frame.len <= 0x20 |
contains | Protocol, field or slice contains a value | sip.To contains "a1543" | |
matches | ~ | Protocol or text field matches a Perl-compatible regular expression | http.host matches "acme\\.(org|com|net)" |
bitwise_and | & | Bitwise AND is non-zero | tcp.flags & 0x02 |
- text 문자열
- http.request.uri == "https://www.wireshark.org/"
- "www.\x77\x69\x72...\x6b.org"
- 순수한 문자열인 경우 문자열 앞에 r 을 붙인다
r"\(X11;"
- Slice 연산
eth.src == 00:00:83:00:20:20- [start : length]
eth.src[0:3] == 00:00:83 - [start - end_offset] - start 지점부터 end 지점
eth.src[1-2] == 00:83 - [ : len] - start = 0 ~ len
eth.src[ :4] == 00:00:83:00 - [start_offset : ] - start ~ 끝
eth.src[4: ] == 20:20 - [offset, start : length] - 나열된 범위 합치기
eth.src[4, 1:2] == 20:00:83
- [start : length]
- membership operator
- tcp.port in {80 443 8080}
- tcp.port == 80 || tcp.port == 443 || tcp.port == 8080
- tcp.port in {443 4430..4434}
tcp.port in {10..8000} : dst port, src port 중 하나라도 포함되면 true - tcp.port == 443 || (tcp.port >= 4430 && tcp.port <= 4434)
src port는 80 이면 마지막 조건에 맞고
dst port 가 5678이면 두번째 조건에 맞기 때문에 괄호 속 연산이 참이 된다.
- != 연산
- ip.addr != 1.2.3.4 인 경우
- src = 1.2.3.4 && dst = 3.3.3.3
- src = 3.3.3.3 && dst = 1.2.3.4
위 두가지 경우 true
- !(ip.addr == 1.2.3.4) 와
ip.src != 1.2.3.4 && ip.dst != 1.2.3.4 가 같은 결과
- ip.addr != 1.2.3.4 인 경우
- http 요청을 실행한 웹 브라우저 유형
-> User-Agent: - http 요청을 보낸 포트: 80
- http 버전 확인
- 내 브라우저의 http 버전은 내가 보낸 요청에서 확인 - 지원 언어 확인
Accept-Language - 마지막으로 수정된 날짜
-> last-modified - content byte 크기
Content-Length - Cache-Control: max-age=X
설정한 시간이 지나면 삭제
Conditional GET
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
- 첫번째 GET 요청에는 If-Modified-Since 부분이 없음
- 두번째 GET 요청에는 If-Modified-Since 부분이 있음
이 필드는 이 시간 이후 수정된 경우 요청된 응답을 돌려줌. 수정되지 않은 경우 304 응답, 리소스 없음
HTTP Authentication
http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
- 인증이 필요한 페이지에 처음 접근 시
401 UnAuthorized - 위 주소에 id / password 입력 시
Authorization -> Credentials: wireshark:network
id: wireshark, pwd: network
nslookup cmd
- Server, Address
응답을 준 dns 서버의 주소
내꺼는 공유기 주소임 - Non-Authoritative answer 에게 응답이 옴
책임 서버에게 응답을 받은게 아니라, 어딘가에 캐시된 정보를 알려줌 - 기본, -type=A
host 네임의 ip 주소를 리턴함 - -type=AAAA
IPv6 주소를 리턴 - -type=NS
nslookup 한 도메인을 관리하는 책임 DNS 가 존재하는데, 그 DNS의 호스트 이름을 알려줌 - -type=MX
SMTP 메일
UDP
- UDP 페이로드 부분이 표현가능한 최대 범위 = (2^16 -1) - 8
length = 16 bit
= (2^16 - 1) => 최대 세그먼트 부분
= (2^16 - 1) -8 => 최대 페이로드 - 나타낼 수 있는 최대 포트 번호 크기: 2^16 - 1 = 65,535
- UDP 프로토콜 번호: 17
TCP
- 세그먼트 최대 사이즈를 넘어가는 경우 TCP 세그먼트 여러개로 쪼개짐
- Flag bit
- SYN
3-way handshaking 의 첫번째 tcp 메시지
- sequence 넘버: 클라이언트가 설정 (0) - SYN, ACK
SYN 메시지에 대한 응답
- sequence 넘버: 서버가 설정 (0) - ACK
- SYN, ACK 메시지에 대해 잘 받았다고 응답
- PSH, ACK 메시지
- FIN, ACK - PSH, ACK
서버에 있는 버퍼가 가득 차지 않아도 바로 응답하도록 요청
- SYN
- ACK 넘버
다음에 자신이 받기를 기대하는 시퀀스 번호
자신이 받은 시퀀스 넘버 + 현재 받은 데이터 (or cumulative ACK는 현재까지 받은 데이터)
처음부터 현재까지 받은 바이트스트림의 양 - 시퀀스 넘버
ACK로 받은 넘버로 지정해서 보냄 - TCP Segment Len
패킷에 나오는 Len 길이는 payload 길이를 말하는 것 - EstimatedRTT = (1 - ⍺) * EstimatedRTT + ⍺ * SampleRTT
(1 - ⍺) * 첫번째 세그먼트 RTT + ⍺ * 두번째 세그먼트 RTT - Win
receive window (rwnd)
자신이 받을 수 있는 데이터의 양을 상대방에게 알려주는 것
'나는 이만큼만 받을 수 있다'
이 정보를 가지고 flow control 함 - SLE, SRE
Selective ACK
0~ ACK, SLE ~ SRE 까지는 데이터를 받았다고 알려줌
=> ACK ~ SLE, SRE ~ end 까지는 아직 못받음' - TCP 세그먼트 갯수 -> Reassembled
IP analysis - network layer
- TTL
- router는 각 데이터그램을 받을 때마다 TTL 값을 1 씩 감소
- TTL 값이 0이 되면, host에게 알림
- Traceroute
- 첫번째는 1개 이상의 데이터그램을 TTL = 1로 설정해서 보냄
- IP datagram 에서 Protocol 부분 == Upper layer protocol
- IP header length = 20
- 쪼개진 IP datagram인지 확인하려면
- Flags 필드에서
More fragments: Not set 확인
-> IPv4 프로토콜 - Fragment Offset: 0 이면
쪼개진 데이터 그램이 뒤에 존재하지 않음
- Flags 필드에서
- 쪼개진 IP 데이터그램의 총 사이즈
Total Length 값을 모두 더함
1500 + 1500 + 40 - 두번째 fragment인지 확인하려면
-> Fragment offset: 첫번째 fragment data 크기
-> Identification 값 같음 - IPv6 주소
- 16bit 씩 8자리로 구성 = 128bit
- 2601:193:8302:4620:215c:f5ae:8b40:a27a
0193 -> 193 : 앞에 0은 생략됨 - 2001:558:feed::1
:: 은 사이의 값이 전부 0임을 나타냄
- flow label
데이터그램의 흐름을 인식하는데 사용됨 - IPv6는 헤더의 길이가 고정됨 -> 20바이트, 헤더에 표시 안함
payload length = 37byte - IPv4 == Upper layer protocol == protocol
= IPv6 == Next header
- IPv6 데이터그램을 받으면 next header에 적힌 프로토콜로 전달함
UDP 사용 프로토콜
: DNS, HTTP/3, DHCP
ICMP는 네트워크 계층에서 자체 프로토콜 사용함
반응형
'sswu' 카테고리의 다른 글
오픈소스 소프트웨어 중간 정리 (0) | 2022.03.20 |
---|---|
[네트워크 분석 실습] 네분실 기말 정리 (0) | 2021.11.19 |
파이썬 기말 정리 (0) | 2021.11.15 |
[모바일SW] 기말 정리1 (0) | 2021.11.08 |
[네트워크 분석 실습] 정리1 (0) | 2021.09.20 |
Comments