수업 노트 - 네트워크 기초
개인적인 참고 용도입니다
구글과 나는 어떻게 연결되나
tracert 8.8.8.8
리눅스에서 traceroute (UDP 패킷 보냄)
tracert는 ICMP Echo Request
-> 11단계
OSI7 계층 모델
2계층 Data Link Layer
물리주소로 MAC 주소 사용
이더넷 프로토콜
이더넷 : 1980년에 처음 개발되었으머 1983년에 IEEE802.3으로 표준화 됨.
여러 컴퓨터가 동시에 데이터를 보낼 수 있음
Collision handling : Carrier Sense Multiple Access - Collision Detection (SCMA/CD)
WLAN
ARP
- 같은 네트워크 대역에서 MAC주소를 알아오기 위해 사용함
ARP 테이블 확인하기
arp
man arp
arp -a
224.0.0.~~ 멀티캐스트
실습 ARP 프로토콜 확인
ARP 뒷부분 패딩은 프레임의 최소 크기 60바이트를 맞추기 위해
APP 28바이트 + 이더넷 14바이트 = 42바이트라서 최소 60맞추려고 마지막에 아무숫자나 붙임
목적지 맥주소 몰라서 FF:FF:FF:FF:FF:FF로 날림
L3 Network Layer
ICMP
(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)
특정 대상과 내가 통신이 잘되는지 확인하는 (Error Reporting Protocol)
요청 : 8
응답 : 0
목적지 못 찾으면 3
시간초과 : 11
IP : Internet Protocol
Addressing Hosts, Encapsulating data inot packets, Rouoting packets from a source to a destination
IP is connectionless
Doesn't care if the packet has reached to the destination
IPv4 : 32 bit
IPv6 : 128bit -> 헤더가 간단하지만 길다
-> 아이피 주소가 많으므로 NAT 같은 거 필요 없으니 효율적임 (End-to-End Connectivity)
-> Auto-Configuration
-> Faste Routing / Forwarding
-> IPSec -> IP Layer에서 보안 통신
-> No Broadcast
-> Mobility (같은 IP 로 전세계에서 통신)
-> Extensibility -> 옵션 파트에 더 많은 정보 넣을 수 있음
IPv6 헤더
32 hexadecimal numers
-> 0이 반복되면 생략
IPv6 주소 구조
DHCP - Dynamic Host Configuration Protocol
1) Discover
IP 몰라서 000. 브로드캐스트라서 255255255255
2) Offer
IP 돌려줌, 맥주소 제대로 봼
3) Request
아까 보내준 IP로 요청
4) ACK
IPv4 프로토콜 구조
Total Length : 16bit
Flag :
- bit 0: Reserved; must be zero
- bit 1: Don't Fragment (DF)
- bit 2: More Fragments (MF)
IPv4 Subnetting
서브넷마스크
IPv4 조각화
ping 192.168.0.51 -l 4800
4800보내면 쪼개짐
1480+IPv420 -> 1500이니 MTU 1500 통과하고 나서 이더넷 14 붙어서 전체 1514
ICMP 368+IP 20 +이더넷14 = 402
4계층 - Transport layer
System Reliability and Quality Ensured!
상위 레이어에서 받아서, 작은 조각으로 쪼개고, 네트워크 레이어로 보냄.
모든 유닛이 잘 도착하는지, 순서대로 되는지 확인함
Well-Known 포트 번호
Registered 포트 번호 (일부)
Dynamic 포트
UDP
UDP ->신뢰성이 낮음. 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 사용
Source Port, Checksum -> Optinoal
UDP 프로토콜을 사용하는 프로그램
- DNS 서버
- TFTP 서버 (파일 전송)
- RIP 프로토콜
TCP -> 연결지향형. UDP 보다 안정적.
- Connection Oriented
- Data fragmentation
- Error-Free
- Flow Control
일반적인 길이는 20바이트, 최대 60바이트까지 가능
- Offset -> 헤더 길이와 동일 (나누기 4한 것)
TCP의 플래그
TCP를 이요한 통신과정
3Wy Handshake
1. 클라이언트가 서버에게 요청 패킷을 보내고
2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다
Flow Chart - nate.com
Seq No는 임의로 설정되나 와이어샤크에서 쉽게 볼 수 있도록 0, 1 등으로 변경하여 보여줌
Handshake 이후에 데이터를 포함하여 통신해도 기존 SEQ 번호와 ACK번호는 계속 연결됨
데이터 크기
1460
NAT와 포트포워딩
HTTP 요청 프로토콜의 구조
Request Line의 구조
요청 타입의 종류
예시
URL 예약 문자 :
? 파라미터가 시작된다는 것을 알려줌
= 파라미터 값 대입
& 다음 파라미터 식별자
+ 공백
! * ' ( ) ; : @ $ , / # [ ] 그 외 문자..
데이터에 예약문자가 들어가면 데이터 Body에 그대로 전송이 될까? &
HTTP 헤더
POST Method로 바꿀 경우 Content-Type도 있어야 함.
서버측의 행위가 필요할 경우에는 POST 사용
단순히 자원을 얻고 싶으면 GET -> 중복 액션을 요청할 수도 있음 개발자는 그에 맞춰 사용
쿠키
지속쿠키 - 하드디스크에 저장되어 열람이 가능
폐기가 안 될 경우 서버에 다시 요청 가능
세션쿠키
라우팅 테이블
netstat -r
활성연결테이블
netstat -ano