1. TCP, UDP, ARP 프로토콜
1. TCP VS. UDP



- 클라이언트가 서버의 456번 포트에 연결 요청을 보냈을 때, 서버는 다른 사용자의 연결 요청도 456번 포트를 통해 받아야 하기 때문에, 연결 요청 프로세스를 768번 포트로 fork 해서 클라이언트의 123 포트와 연결을 설정한다
2. ARP(Address Resolution Protocol)
1. DoD모델(DARPA 모델)

2. ARP의 동작

- arp 프로토콜은 같은 네트워크 대역에서만 동작
- 다른 네트워크 대역에 있는 서버와 연결하기 위해서는 게이트웨이를 거쳐야함
- 이러한 연결은 연결 설정에 오랜 시간이 걸리기 때문에,
- 한번 연결 설정하였던 정보들을 cache 하여,
- 다음 연결시 arp를 하지 않고, 바로 게이트웨이로 연결하여 더 빠른 시간에 연결되도록 함
arp 프로토콜을 통해 cache 된 정보 확인하기
arp -a
2. 네트워크 설정 기본
1. 호스트 이름 변경
- VM을 복사할 경우, 호스트 이름이 변경되지 않고 중복되게 된다
- 호스트 이름이 중복될 경우, NAT 네트워크를 통해 IP주소를 DHCP 로 받아올 경우 중복됨
- 헷갈릴 가능성도 높음.
hostname
sudo hostnamectl set-hostname [변경할 호스트 이름]
2. IP 주소 설정
1. IP 주소 확인 : ip, ifconfig
ip [옵션] OBJECT { COMMMAD | help }
- link(ip l) : 네트워크 인터페이스(L2) 표시
- address(ip a) : IP 주소(L3) 표시
- route(ip r) : 라우팅 테이블(L3) 표시
* ip r 명령은 정보가 부족해서 주로 route -n 명령을 통해 route 정보 확인
- neigh(ip n) : ARP 테이블(L3) 표시
2. 명령어로 IP 주소 변경
- 명령어를 통해 변경한 ip 주소는 영구적이지 않음, 재부팅시 초기화
- ip 주소를 인터페이스에 추가하는 개념
1. ip 명령
sudo ip a add [변경할 ip 주소/netmask] dev [인터페이스 지정 - enp0s3, wlan 등]
2. ifconfig 명령
sudo ifconfig [인터페이스 이름] [변경할 ip 주소] netmask [netmask] up
3. 설정 파일로 IP 주소 변경
1. 게이트웨이 IP 주소 확인
- 게이트웨이는 네트워크와 네트워크를 연결해주는 역할
- 집을 예시로 들었을때, 컴퓨터와 연결되어 있는 공유기가 게이트웨이
- 라우터도 게이트웨이라 부를 수 있음, 하지만 게이트웨이는 서로 다른 미디어(유선전화, 인터넷 등)의 네트워크 연결 가능
- 라우팅은 L3 에서 IP 프로토콜을 통해, 데이터를 내 컴퓨터에서 목적지까지 보내는 것
- 라우팅에 필요한 경로 정보를 담고 있는 라우팅 테이블에서 게이트웨이 IP 주소 확인 가능
route -n

*CGI (Common Gateway Interface)
- 웹서버와 데이터베이스를 연동시킬 때,
- WWW(HTML) ------- DB(SQL), WWW의 HTML 언어와 DB의 SQL 언어가 다르므로
- WWW(HTML) ---CGI--- DB(SQL), 다음과 같이 CGI가 번역을 해줌
- 하지만 셋 모두 별개의 메모리를 갖는 프로세스여서 시간이 오래 걸림, 보통 메모리 작업이 제일 느림
- 요즘은 웹 프로세스 내의 쓰레드를 이용하여,
- WWW(HTML/ASP,JSP,PHP) ------- DB(SQL) 와 같은 구조
2. 비어 있는(할당 가능한) IP 주소 확인
3. DNS 서버 IP 주소 확인
- DNS(Domain name System) 은 www.naver.com 등의 이름 주소와 해당주소 서버의 IP주소를 매핑 해주는 시스템
- 구글의 DNS 서버인 8.8.8.8이 주로 사용되고 빠름
4. 설정하기
- 무언가 설정하는 파일은 모두 /etc 밑에 존재함
- ip 설정파일의 경로 : /etc/netplan/00-installer-config.yaml

- 설정을 변경할때는 오류가 발생할 경우를 대비해 복사본을 만들어 두는것이 좋음
sudo cp 00-installer-config.yaml orig_00-installer-config.yaml
- 복사본을 복구할때는 원래 이름과 다르면 오류가 발생하므로 꼭 체크
- 아래와 같이 내용 수정

- 변경된 사항 적용하기
sudo netplan apply
- 확인하기

- 좀 더 보기 좋게 작성하는 법

* systemd란?
- systemd(system daemon)이란 리눅스가 부팅하고 나서 가장 먼저 실행되는 데몬
- 이전에는 init이 있었으나, run-level 기반의 순차적 실행되어 부팅속도가 느림
- systemd는 부팅시에 병렬로 실행시켜 부팅속도가 빠름
- /etc/systemd/
사용 예
- systemd 이전 -> $ sudo service vsftpd start
- systemd 이후 -> $ sudo systemctl start vsftpd
4. 게이트웨이 확인 및 설정
route -n
sudo route add default gw [게이트웨이 IP주소]
sudo route del default gw [게이트웨이 IP주소]
5. 공유기? 스위치? 라우터? 게이트웨이? 허브?

6. ping 으로 통신상태 확인
- ping [IP 주소] : [IP 주소]에 메시지를 보내고 응답을 받음
- ping -c [숫자][IP 주소] : ping 메시지의 개수를 [숫자] 로 설정
- fping -g [IP 주소/netmask] : [IP 주소/netmask] 안의 어떤 IP 주소가 사용중인지 확인

7. traceroute 로 통신 경로 확인
sudo apt install inetutils-traceroute
traceroute 8.8.8.8

8. IP 주소를 통해 누구인지 알아내기 : whois
sudo apt install whois
whois 112.174.84.6

9. netstat로 통신 연결 상태 확인
netstat -rn
netstat -an | grep LISTEN
sudo netstat -p | more
netstat -i
* 명령줄 tip
command_1 | command_2
- command_1 실행 결과 -> command_2 입력 값
command_1 ; command_2
- command_1 실행 다음 command_2 실행
command_1 && command_2
- command_1 성공시, command_2 실행
10. 네트워크 상태 확인 절차
