2023.11.9 TIL
TCP | UDP | |
---|---|---|
연결 방식 | Connection Oriented | Connectionless |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있음 |
수신 여부 확인 | 수신 여부를 확인함 | 수신 여부를 확인하지 않음 |
통신 방식 | 1:1 통신 | 1:1 or 1:N or N:N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
IP 주소로 MAC 주소 알아내기
arp [IP address]
ping
→ Application인데 TCP/UDP 안거지고 바로 ICMP를 사용
ARP를 사용하기 위한 조건
C class(192대), ✅ 같은 network 대역에서만 동작한다.
→ B는 A가 보낸 메세지에서 MAC, IP, Port # 를 받았고, 따라서 A에게만 전송할 수 있음
우리는 naver.com의 MAC을 모르는데 어떻게 접속 가능한가?
우리와 다른 network의 IP주소일 것이다.
그 IP를 실어서 자기 network에 뿌리면 어느 누구도 자신의 network가 이나므로 응답을 못할것임
ARP 메세지를 보낸후 일정시간 응답이 없을 경우, gateway가 자신의 MAC 주소를 실어서 응답을 해준다!
그 상위 network의 gateway가 응답하고 이걸 naver gateway까지 반복.
hostname
→ 현재 hostname 출력
sudo hostnamectl set-hostname [new hostname]
근데 이렇게 바꿔도 Prompt에 그대로 뜬다 → 로그인 당시의 hostname을 띄우는 것 → Reboot!
WSL에서 안될수도 있으니까 가급적이면 VM에서 하자.
ip [option] OBJECT {command | help}
l
→ link, Network interface(L2) 표시
a
→ address, IP 주소(L3) 표시
r
→ route, Routing Table(L3) 표시. 근데 보통 걍 route -n
이걸 씀.
n
→ neigh, ARP Table(L3) 표시
ifconfig
→ interface config
→ 영구적이지 않다.
sudo ip a add [new ip address] dev enp0s3
→ ip 변경, interface는 enp0s3로(sw적 ip를 추가)
sudo ifconfig [interface name] [new ip address] netmask [netmask] up
→ 영구적이다.
nslookup www.xslab.co.kr
→ 이 domain에 해당하는 ip주소 뜸/etc/netplan/00-installer-config.yaml
→ 혹시모르니 복사해두고 수정하자
cd /etc/netplan
dir
→ orig.00-installer-config.yaml
가 복사해둔 파일
network:
ethernets:
enp0s3:
addresses:
- 10.0.100.10/24 # 할당할 고정 IP주소
gateway4: 10.0.100.1 # Routing table로 확인한 값
nameservers:
addresses:
- 8.8.8.8
search: []
enp0s8:
dhcp4: true
version: 2
# 이 방식이 더 직관적이고 많이 쓰임
network:
ethernets:
enp0s3:
dhcp4: no # 유동IP 사용하지 않음
addresses: [10.0.100.11/24] # 할당할 고정IP 주소
gateway4: 10.0.100.1 # Routing table로 확인한 값
nameservers:
addresses: [8.8.4.4]
enp0s8: # 전에 Host전용Adapter 실습한게 남아있는것. 지금은 없음
dhcp4: true
version: 2
→ 저장 후, $ sudo netplan apply
→ OS에 변경사항 반영 요청
내 컴퓨터와 연결된 공유기, 공유기와 연결된 외부 internet
→ 공유기, Router == gateway
192.168.149.2
Routing Table
route -n
→ Flags field에 G가 붙는 것들이 Gateway
내가 바꾸고 싶은 IP주소가 available한지 확인
→ ping
을 해보자! 안되면 그거 쓸수있는거
systemd-resolve --status | grep 'DNS Server'
가급적 8.8.8.8같은 공개된 DNS Server를 쓰자
※ source .bashrc
→ alias 수정후 변경사항을 이전에 실행한 로그인된 bash는 모르니 반영해준다.
※ /etc
밑에 Linux의 모든 설정파일 존재
/etc/resolv.conf
→ 내용 변경 금지!!!
sudo apt install resolvconf
sudo vi /etc/resolvconf/resolv.conf.d/head
→ 이 파일로 편집해야 한다!!!
근데 이건 번거롭다.
→ 아까 본 /etc/netplan/yaml파일
방법 쓰자.
System daemon
옛날에 있던 init
이 systemd
로 바뀜
부팅시 병렬로 실행시켜 부팅속도가 빠르다
route -n
→ Routing table 출력, Gateway 확인 가능 numeric(예쁜 숫자 표현 옵션)
Default gateway (ex: 10.0.100.1) : Gateway가 외부의 여러 network를 연결해주는 경우에 어디로 갈지 모르면 여기로 보냄
Default Gateway del, add
sudo route del default gw 10.0.100.1
→ 삭제
→ route -n
해보면 default가 없어서 외부에 못나간다
sudo route add default gw 10.0.100.1
→ 다시 추가
ping
→ 통신 상태 확인ping www.google.com
→ website가 살았는지 죽었는지 확인
ping -c 3 10.0.100.1
→ ping 3번만 보내보는 옵션
sudo apt install fping
fping -g 10.0.100.0
→ group으로 확인 가능
traceroute
→ 통신 경로 확인traceroute www.xslab.co.kr
→ 이 gateway까지 어떻게 거져서 도착하는지
whois 128.134.10.145
→ 이 ip가 등록되어있는 지역, 사이트 정보
보안 문제로 *로 차단되어있는 경우가 많다
netstat
→ 통신 연결 상태 확인netstat -rn
→ Routing table
netstat -an | grep LISTEN
→ Active connection(port 등) 확인, 살아있는(listen중인)것만 출력
sudo netstat -p | more
→ 열려였는 Port 확인
netstat -i
→ 내 장치에 연결된 Interface의 상태(RX, TX 등) 확인
L2 Switch: Switching Hub보다 좀더 똑똑함
Hub: 그냥 선만 연결
Switching Hub: 약간의 load balancing
Router: gateway 장비
공유기: 내부, 외부 network routing 장비
L4 Switch: load balancing, TCP/IP
scp [전송할 파일의 경로] [remote_username]@[remote_ip]:[받을 경로]
scp /home/test.txt serinlnx@192.168.xxx.xxx:/home/serinlnx/testscp
scp [remote_username]@[remote_ip]:[전송할 파일의 경로] [받을 경로]
scp serinlnx@192.168.xxx.xxx:/home/serinlnx/test.txt /home/testscp