OSI Model
- Open Systems Interconnection Model
- 네트워크 시스템의 기능들을 표현하기 위해서 사용하는 개념적인 프레임 워크가 OSI Model
- 서로다른 컴퓨터들이 네트워크를 통해 데이터를 주고받는 방법을 규칙
- 총 7 계층으로 나누어져 있음 (아래서부터 1계층부터 7계층까지 있음)
- 각 계층들이 하나씩 발전해 나간 것

1계층 - 물리계층

- physical Layer
- 랜선을 통해서 통신하는 방법 (서로 물리적으로 연결되어 있음)
- 랜선과 랜카드, 랜선을 연결할 포트가 필요함
- 랜카드란? : 네트워크 어뎁터로 0과 1로 구성된 데이터를 전기 신호로 , 전기신호를 0과1로 구성된 데이터로 변환해주는 것
연결 방법
1) 보낼 데이터 작성
2) 컴퓨터에서 데이터를 기계어로 변경 => 인코딩
3) 0과 1을 전기 신호로 변경해줌 => 랜카드
- 전기가 통하면 1, 안통하면 0
- 랜선을 통해서 전기 신호가 전달됨
5) 전기신호를 받아 데이터로 전환 => 랜카드
6) 기계어를 데이터로 변경 => 디코딩
7) 데이터를 받음

허브(hub)

2계층 - 데이터링크 계층
- Data Link Layer
- 네트워크 장비 사이의 신호를 주고받는 규칙을 정하는 층
- 네트워크 내 전송
2계층이란?
스위치라는 장비를 이용해 스위치에 연결되어 있는 컴퓨터들이 이더넷이라는 규칙파에 프레임을 주고 받는 것
이더넷(ethernet)
- 랜(LAN)에 적용되는 프로토콜
- 스위치와 같은 장비를 이용해 데이터를 주고받을 때 사용하는 규칙
- LAN 카드 하나당 하나의 이더넷 디바이스를 가짐 (ifconfig로 확인 가능)
- 선으로 연결되어 있음
와이파이(wifi)
Mac address (맥주소)
- 1계층에서의 단점을 보완하기 위해 만들어진 것
- 즉, 모든 컴퓨터로 데이터를 전송하지 않기 위해 컴퓨터 각각의 주소를 할당해 주는 것을 말함
- 맥주소는 48비트로 되어있음 , 16진수

프레임 (frame)
스위치
- 허브로는 , 원하는 주소로만 (맥주소) 데이터를 보낼 수 없어서 스위치라는 기계로 변경됨
- 스위치에는 연결된 컴퓨터의 맥 주소가 저장되어 있기 때문에 이를 맞춰서 보내줄 수 있음.
- 플러딩 : 만약 연결된 맥주소를 알지 못한다면 (새롭게 연결된 컴퓨터와 같은 상황) 일단 모든 컴퓨터에 다 신호를 보내게 되는 것을 말함.
- loopback
- 시스템 내부 접속 테스트에 사용하는 내 자신에게 신호를 보내는 것을 뜻함.
- 물리적인 하드웨어 장치와 연결되어 있지 않은 가상 인터페이스
- loopback 인터페이스는 IP 주소 127.0.0.1 or localhost를 할당받음
- 주피터 노트북을 켰을 때 크롬창이 뜨는데, 이럴 때 사용함.
2계층의 단점
- 동일한 스위치에 연결되어 있는 컴퓨터들 끼리만 데이터를 주고받을 수 있음
3계층 - 네트워크 계층
- 네트워크 : 하나의 스위치에 연결되어 있는 컴퓨터의 모음
- 3계층은 서로 다른 네트워크들에 있는 컴퓨터들이 서로 데이터를 주고 받는 방식을 정하는 계층
라우터
- 연결 경로를 자동으로 전환해주는 기계
- 네트워크 상에서 최적의 경로(route)를 찾아주는 기기
IP (Internet Protocol)
- 패킷이 네트워크를 통해 목적지에 도착할 수 있도록 라우팅 및 주소 지정을 위한 규칙의 집합
- 인터넷에 연결하는 모든 장치 및 도메인에는 IP 주소가 할당 됨
- IP 주소란 인터넷에 연결하는 장치나 도메인에 할당된 고유 식별자를 뜻함
패킷
 |  |
---|
패킷 구성 (단순) | 패킷 구성 (자세) |
- IP 주소 : 네트워크 ID + 호스트 ID
- 네트워크 ID : 자신이 속한 네트워크
- 호스트 ID : 해당 네트워크에 속한 특정 컴퓨터
IP 주소 체계
1) IPv4
- 첫 번째로 사용된 인터넷 프로토콜
- 주소 규정에 의해 사용이 제한적 (약 43억개)
- 0.0.0.0 부터 255.255.255.255 까지 주소를 가질 수 있음 (10진수 이용)
- 32 비트로 구성됨
2) IPv6
- IPv4의 주소 고갈 문제를 해결하기 위해서 기존 주소 체계를 128비트 크기로 확장한 인터넷 프토콜 주소
- 128비트로 구성되어 있으며 16비트씩 :으로 나누어서 표시함
- 16진수를 이용하여 표현함
사설 IP, 공인 IP
- 공인 IP (public IP) : 인터넷 전체에서 유일한 주소
- 사설 IP (private IP)
- 네트워크 상에서 유일한 주소 (즉 다른 네트워크에 있으면 사설 IP는 겹칠 수 있음)
- IP의 제한성 때문에 공인 IP는 하나로 두고 함께 쓰기 위해서 사설 IP 주소를 만들게 됨
NAT (Network Address Translation)
- 라우터를 통한 사설 IP 주소와 공인 IP 주소간 변환 기술
- 즉, 사설 네트워크의 IP 주소를 공인 IP 주소로 변환하여 외부와 통신이 가능하도록 함.
IP 주소 할당
- 네트워크 주소 클래스
- 클래스에 따라서 어디까지가 네트워크 ip이고, 호스트 ip 인지 판단할 수 있음.
- 하지만, 비효율 적이다.
- 서브넷 마스크 (subnet mask)
- 네트워크 ID와 호스트 ID를 식별하기 위한 값
- 클래스의 비효율을 줄이기 위한 방법
- 보통 프리픽스 표기법으로 많이 표현함
- 프리픽스 표기법 : 서브넷 마스크를 슬래시 비트수로 나타낸 것
- 8, 16 말고도 다른 수를 사용할 수 있음. 
네트워크 주소와 브로드 캐스트 주소
- 네트워크 주소 : 호스트 ID가 모두 10진수로 0인 주소
- 브로드 캐스트 주소 : 호스트 ID가 모두 10진수로 255인 주소
- 브로드 캐스트 : 네트워크에 있는 모든 호스트로 데이터를 전달하는 방식 (알림느낌)
- 이러한 네트워크 주소와 캐스트 주소는 IP 주소로 할당할 수 없음
DHCP (Dynamic Host Configuration Protocol)
- 네트워크에 연결된 장치에 IP 주소 , 서브넷 마스크, 게이트 웨이 주소, DNS 서버 주소 등을 자동으로 할당하는 프로토콜
- DHCP는 네트워크 관리자가 IP 주소를 수동으로 할당하는 번거로움을 줄이고, 네트워크의 효율성을 향상시키기 위해 사용함.
- AWS와 같은 클라우드 서비스를 이용하게 되면 사용할일이 많이 없지만, 자체 서버를 쓰게 되면 많이 사용하게 됨
- 할당방식
1) DHCP discover : 로컬 PC가 브로드캐스트로 DHCP 서버가 어디있는지 확인하기
2) DHCP offer : DHCP 서버가 로컬 PC에 특정 IP 주소 제안
3) DHCP Request : 로컬 PC 가 DHCP 서버에게 해당 IP 주소로 할당 요청
4) DHCP Ack : DHCP 서버가 로컬 PC에 해당 IP 주소 할당 (시간도 정할 수 있음)

ICMP (Internet Control Message Protocol)
- 인터넷 제어 메시지 프로토콜 이라고 부름
- 네트워크 장치에서 네트워크 통신문제를 진단할 때 사용하는 3계층 프로토콜
- 주로 데이터가 의도한 대상에 도달하는지 여부 확인
IP 주소에 대한 명령어 및 실습
ifconfig
ifconfig
- IP 주소를 확인하는 명령어
- 기본적으로 IoopBack , 이더넷에 대한 정보가 뜸
- 브로드 캐스트 주소, IPv6 주소, IPv4 주소, 넷 마스크 등 확인 가능
- 단, 사설 IP 주소가 나타남
et0
이더넷 인터페이스(물리적 랜카드 + 이를 제어하기 위한 소프트웨어 계층을 포함) 이름
첫번째 이더넷 인터페이스에 할당하는 이름이고, et1 ,et2 순서대로 이름을 할당하지만, 랜카드가 추가 되는 경우는 많이 없음
lo
loopback 인터페이스
이는 시스템 내부 접속 테스트에 이용함
물리적인 하드웨어 장치가 연결되어 있지 않은 가상 인터페이스로 IP주소 127.0.0.1 및 호스트명 : localhost를 할당받음
curl ifconfig.me
- public IP 주소 확인 가능
- ifconfig.me 여기 사이트에 들어가면, 내 퍼블릭 IP주소를 확인할 수 있음.
Ping (Packet INternet Groper)
ping
- 네트워크 상태를 점검, 진단하는 명령어
- 다른 호스트 (Host)에 IP 데이터그램이 정상적으로 도달했는지 여부를 검사
- 사이트의 IP주소를 확인할 수 있음
ping www.google.com
- 구글에 ping을 날린다
- 구글은 ping을 받아주는 것을 알 수 있음
- 종료시, 몇개의 패킷을 보내서 받았는지 알 수 있음
ping www.naver.com
- 네이버에게 ping을 날림
- 네이버는 패킷을 보내면, 이를 받지 않는 것을 알 수 있음
tshark
tshark
- ping을 보냈을 때 IP 데이터그램이 도착했는지, 받아졌는지에 대한 log를 터미널에 찍어줌
sudo tshark -i eth0 -f icmp -Y "ip.dst=={보낼IP주소} or ip.src=={보낼ip주소}"
- ip 주소를 네이버로 하면 내 컴퓨터에서 보내는 것만 보여지고, 구글로하면 내 컴퓨터에서 보내는것과 구글에서 보내는 것 두개를 확인할 수 있음.
4계층 - 전송계층
- 네트워크계층이 데이터를 전달할 때, 4계층은 데이터가 제대로 전달되었는지 확인
- 데이터가 최종적으로 도착할 애플리케이션이 무엇인지 식별가능
- 어느 애플리케이션에 도착할지 식별해야하므로 port 개념사용
서버, 클라이언트
- PC가 두개 통신할때, 요청을 받는게 서버, 클라이언트가 요청 하는 쪽
Port
-
네트워크 통신으로 컴퓨터간 데이터를 주고받을 때 프로세스 구분을 위해 사용하는 논리적인 앤드포인트
앤드포인트
네트워크 통신에서 데이터 교환의 시작지점, 도착지점을 의미함
ip 주소와 port번호를 함께 사용함
-
4계층 프로토콜인 TCP 와 UDP에서 사용됨.
-
0부터 65535 개의 번호를 가질 수 있지만, 0 ~ 1023은 well-known port 또는 system port 로 정해져 있기 때문에 잘 사용하지 않음

sudo netstat -tlnp
- 0.0.0.0 : 전부다 갈수 있다, 들어갈수 있다.
- Listen : 해당 포트가 클라이언트의 요청을 기다리고 있다
- ESTABLISHED : 연결이 성공적으로 이루어짐 (3way hand 가 완료)
- Close : 해당 포트가 닫혀있음
통신방법
TCP
- 연결형 통신 프로토콜
- 데이터를 신뢰성 있고 정확하게 전달함.
- 이를 위해 상대방과 계속 연락하면서 통신해야해서 속도가 느리고 무거운 단점이 있음
- 연속성보다 신뢰성이 있는 전송이 중요할 때 많이 사용
예시
웹(http) : 웹브라우저가 웹페이지 요청시
이메일(SMTP) : 이메일을 수신하거나 전송할때
파일 전송(FTP) : 서버와 클라이언트간 파일 전송시에
TCP 세그먼트
- TCP의 세그먼트의 URG, ACK, PSH, PST, SYN, FIN 은 상대방이랑 통신하는 부분
- 연결과 종료에서 각각이 응답하는 부분이 다름
 |  |
---|
연결 | 연결종료 |
3way hand shake | 4way hand shake |
UDP
- 비 연결형 통신
- 가벼워서 속도가 빠름
- 데이터를 효율적으로 전달함
- 상대방의 반응을 확인하지 않고 일반적으로 전달하기 때문에 신뢰성이 떨어짐
- 신뢰성보다 네트워크 부하가 적은 전송이 중요할 때 많이 사용
예시
DNS : 도메인 이름을 ip 주소로 해석할 때
온라인 게임
영상 및 오디오 스트리밍
스케일 업, 스케일 아웃
- 스케일업 : 서버의 크기를 키우는 것
- 반대는 스케일 다운

- 스케일 아웃 : 서버를 늘리는 것 (증설)
- 반대는 스케일 인

응용 계층 (5,6,7)
DNS
- Domain Name System
- 웹사이트의 IP주소와 도메인 주소를 이어주는 시스템

nslokkup www.google.com
프로토콜 정리

로드밸런서 (Loadbalancer)
- 서버를 여러개 두었을 때, 사용자들을 분할시키는 것
- L4 로드밸런서
- 4계층에서 작동하는 로드밸런서
- IP 주소와 포트번호로 트래픽 분산 시킴

- L7 로드밸런서
- 7 계층에서 작동하는 로드벨런스
- 애플리케이션 계층에서 작동하므로 http/htpps 프로토콜 사용
- URL, 해더, 쿠키 정보 등을 활용

ISP
- internet service provider
- 인터넷에 접속하는 수단을 제공하는 주체
- 국내에는 KT, SK 텔레콤, LG 유플러스 등이 있음

국내 - 국외 를 연결할때에는 해저 케이블 이용