1계층부터 4계층까지다.

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/

https://ko.wikipedia.org/wiki/인터넷프로토콜스위트
| 계층 | 이름 | 주요 역할 및 예시 |
|---|---|---|
| 7 | 응용 계층 (Application Layer) | 사용자 앱과 직접 상호작용. 예: HTTP, FTP, SMTP |
| 6 | 표현 계층 (Presentation Layer) | 데이터 형식, 암호화, 인코딩 처리. 예: JPEG, TLS |
| 5 | 세션 계층 (Session Layer) | 세션 관리, 동기화, 재연결. 예: NetBIOS, RPC |
| 4 | 전송 계층 (Transport Layer) | 신뢰성 있는 데이터 전송. 예: TCP, UDP |
| 3 | 네트워크 계층 (Network Layer) | 라우팅, 논리 주소 처리. 예: IP, ICMP |
| 2 | 데이터링크 계층 (Data Link Layer) | MAC주소, 에러 검출. 예: Ethernet, PPP |
| 1 | 물리 계층 (Physical Layer) | 전기/광 신호로 비트 전달. 예: 케이블, 하드웨어 장치 |
이제 본격적으로 하나씩 파보자.
대표적으로는 이더넷, 광섬유가 있으며 하드웨어와 가장 밀접한 계층이다.
진짜로 전선을 타고 전기 신호가 움직이면서 이루어지는 통신을 한다.

이런 랜선을 본 적 있을 것이다. 이는 UTP라는 이름으로 익숙하게 알려진 케이블이다.
네트워크도 결국에는 케이블로 0과 1의 신호를 전기(즉, 빛이다)로 흘려보내는 것이다.
Physical Layer는 진짜 하드웨어적인 그 전기 신호를 말한다.
이에는 특징이 있는데 하나씩 살펴보자.
비트 단위로 전송한다.
비트는 0과 1로 나타낸다. 전기 신호도 논리적으로 0과 1의 신호로 바꾸어서 보낸다.
Modulation, Demodulation
비트 단위는 디지털 신호다. 0과 1로 정확하게 분할된다.
그러나 물리 계층에서 랜선으로 보내는 전기 신호는 아날로그 신호이다. 디지털 신호를 아날로그 신호로 변환하는 과정을 물리 계층에서 수행한다. 이렇게 변환해주는 변환기가 있는데 이를 모뎀이라고 한다.
전송 방식
UTP 케이블
데이터를 신호로 전달하는 물리 매체
리피터 Repeater
약해진 전기 신호를 증폭해서 다시 보내는 물리 계층의 장비
모뎀 Modem
ISP와 연결하기 위해 필요한 장치이다.
전송선에 디지털 신호를 바로 보내면 신호 전달이 잘 되지 않기 때문에 디지털 신호를 아날로그 신호로, 아날로그 신호를 디지털 신호로 형식을 변경하는 기기이다.
WAN(외부망)에 연결되어 전화선이나 케이블을 디지털화 한다. 별도 장비로 분리되거나 공유기에 내장되어 있다.
NIC Network Interface Card
host 내부와 네트워크 외부의 연결다리 역할을 한다. 구체적으로는 CPU, 메모리 등 시스템이 처리한 데이터를 네트워크로 내보내거나, 네트워크에서 들어온 데이터를 CPU로 전달한다.
데이터를 네트워크로 내보낼 때, 디지털 비트를 전기 신호로 변환한다. 이 전기 신호는 LAN(내부망)의 경로에 있는 다른 호스트, 스위치, 허브 등으로 전달할 수 있다.
허브 Hub
수신한 신호를 내부망의 전체 host에 뿌려준다. 이를 브로드캐스트라고 한다.
요청을 보낸 host를 알지 못하고 모두에게 보내서 효율, 보안적 측면에서 매우 안 좋다.
따라서 허브는 현대에서 잘 사용되지 않고 스위치로 대체되었다. (스위치는 MAC 주소를 확인하여 필요한 포트에 데이터 전달)
여러 컴퓨터가 한 케이블을 공유한다면 어느 컴퓨터가 언제 데이터를 전송할지 정해주는 역할이다. 충돌 없이 데이터를 전송하기 위해서는 규칙을 정해야 한다.
현대에는 엄청난 장치들 사이에서 막대한 데이터들이 오간다. 이 과정에서 일부 데이터가 유실될 수 있지만, 그럼에도 불구하고 목적지까지 데이터를 최대한 정확히 전달할 수 있도록 경로를 설정하고 주소를 관리하는 계층이다.
192.168.10.34/24
위 IP 주소는 어떤 구성일까?
앞 24비트는 네트워크 그룹을 식별하고, 뒤 8비트는 그 안에 있는 개별 컴퓨터를 식별한다.
그니까, 192.168.10.0 이 부분이 네트워크 주소이고 .34 즉, 호스트 주소 34번의 주소이다.
192.168.10.34 = 11000000.10101000.00001010.00100010
= 8비트 + 8비트 + 8비트 + 8비트 = 총 32비트
이렇게 말이다!
그렇다면 /24 는 무슨 역할일까? 아래에서 보겠지만, 네트워크 주소가 몇 비트인지 알 수 있다. 앞에서 24비트가 네트워크 주소라는 의미이다.
위 예제는 8비트 만큼으로 식별하지만, 호스트가 많은 상황에서는 유동적으로 지정할 수 있다.
네트워크 주소와 호스트 주소를 나누는 규칙이다. 이를 기준으로 어디까지가 네트워크고, 어디부터가 호스트인지 알 수 있다.
AND 연산을 통해 IP 주소에서 빠르게 네트워크 주소를 계산할 수 있어, IP가 어느 네트워크 소속인지 파악할 수 있다.
255.255.255.0
위의 서브넷 마스크는 앞 24비트까지가 네트워크이고 뒤 8비트는 호스트이다.
2진수로 풀어보면
11111111.11111111.11111111.00000000
이렇게 되며, 1이 네트워크 그룹, 0이 호스트를 식별하는 비트 구분 기준이다.
이걸 왜 쓰는지 의문이 들테다.
서브넷 마스크가 있으면 네트워크 주소를 쉽게 알아낼 수 있다. AND 연산으로 말이다.
11000000.10101000.00001010.00100010 (IP)
11111111.11111111.11111111.00000000 (Subnet mask)
------------------------------------
11000000.10101000.00001010.00000000 → 네트워크 주소 = 192.168.10.0
위의 예제에서 이렇게 AND 연산을 하면 바로 네트워크 주소를 얻을 수 있고, 이를 따라 라우팅하게 된다.
여태까지 IPv4를 사용하며 32비트로 주소를 표시했다. 하지만 현대에는 엄청난 수의 장치들이 생겨나면서 택도 없이 부족한 상황에 맞닥뜨렸다. 주소 고갈 상태에 도달했다.
따라서 128비트로 주소를 표시하는 IPv6 규격을 도입하였다.
라우터가 어떠한 IP 주소를 목적지로 할 때, 어디로 보내야 할 지 적어둔 테이블이다.
한 컴퓨터 안에서도 여러 프로그램이 동시에 돌아간다. 그 중에서 어떤 프로그램(프로세스)에게 데이터를 전달해야 하는지 결정하는 게 정송계층이다.(포트번호로 식별)
수신자가 받을 때까지 추적하여 신뢰성을 보장한다. 손실되면 재전송하고, 순서를 보장한다. 어떻게 보장할 수 있을까?
SYN 패킷을 보낸다. (연결 요청)SYN + ACK로 응답한다. (수락 + 너도 연결 요청해)ACK를 보낸다. (응답 수락)이러한 절차를 거쳐 데이터를 송수신 한다.
신뢰성이 없지만 빠르게 데이터를 전송할 수 있다. 따라서 일부 패킷이 손실 되어도 속도가 보장되어야 하는 상황에적합하다.
유투브 등의 실시간 스트리밍, 게임, 화상회의처럼 조금 손실 되더라도 빠른 전송이 더 중요한 상황에서 사용한다.
IP 주소는 호스트를 식별하고, 포트 번호는 그 호스트 안에서의 애플리케이션(프로세스)를 식별한다.
0번에서 1023번 포트는 Well-Known Ports라고 부르며 시스템이 예약해둔 영역이라서, 일반 사용자 앱은 1024 이상의 포트를 사용한다. 이외의 정해진 몇몇 포트 번호가 있으니 참고하자.
| 서비스 | 포트 번호 |
|---|---|
| HTTP | 80 |
| HTTPS | 443 |
| SSH | 22 |
| DNS | 53 |
| FTP | 21 |