컴퓨터 및 네크워크 간에 통신 규약과 규칙, 즉 서로 간의 약속
개방형 시스템 상호 연결(Open Systems Interconnection Reference)
국제 표준화 기구에서 만든 모델
각 계층은 특정 기능을 수행
현재 대부분의 프로토콜은 TCP/IP 기반으로 존재
| 계층 | 이름 | 데이터(PDU) | 설명 | 장비 |
|---|---|---|---|---|
| 7계층 | 응용 계층(Application) | Data | 이메일&파일 전송, 웹사이트와 상호작용 | 소프트웨어기반 |
| 6계층 | 표현 계층(Presentation) | Data | 문자 코드, 압축. 암호화 등 데이터 변환 | 소프트웨어기반 |
| 5계층 | 세션 계층(Session) | Data | 세션 체결, 통신 방식 설정 및 동기화 | 소프트웨어기반 |
| 4계층 | 전송 계층(Transport) | Segments | 데이터를 신뢰성과 정확성 있는 전달 | 소프트웨어기반 |
| 3계층 | 네트워크 계층(Network) | Packets | 다른 네트워크와의 통신을 위한 경로 설정 | 라우터, 일부 스위치 |
| 2계층 | 데이터 링크 계층(Data Link) | Frames | 인접한 네트워크 기기 간의 데이터 전송 | 스위치, 브리지 |
| 1계층 | 물리 계층(Physical) | Bits | 물리적인 연결과 전기 신호 변환 | 케이블, 허브, 리피터 |
| 계층 | 전송 단위 | 전송 범위 | 특징 |
|---|---|---|---|
| 물리 계층 | Bit, Signal | Hop-by-Hop 전송 | 중간에 정보가 바뀌지 않음 |
| 데이터 링크 계층 | Frame | Hop-by-Hop 전송 | 중간에 정보가 바뀌지 않음 |
| 네트워크 계층 | Packet, Datagram | End to End (종단간) 전송 | 중간에 정보가 바뀌지 않음 |
| 전송 계층 | Segment, User Datagram | End to End (종단간) 전송 | |
| 응용 계층 | Message | End to End (종단간) 전송 |
캡슐화 과정은 데이터를 각 계층에서 필요한 헤더 정보를 추가하여 다음 계층으로 내려보내는 과정. 각 계층은 자신이 처리해야 할 프로토콜 헤더를 추가하고, 이를 기반으로 데이터를 전달
사용자가 직접 사용하는 응용 프로그램에 관련된 데이터 생성
주로HTTP, FTP, SMTP등의 프로토콜이 사용
실제로 전송할 데이터인메시지(Message)가 생성
데이터의 형식 변환, 암호화, 압축 등을 수행
데이터에 대한 특정 변환 작업이 이루어진 후메시지(Message)가 다음 계층으로 전달
송수신 장치 간의 세션 관리 및 연결 제어
추가적인 헤더를 추가하지 않고 세션 관리와 동기화 작업 수행
데이터 전송의 신뢰성을 보장하는 계층으로,
TCP/UDP프로토콜을 사용
세그먼트(Segment)라는 데이터 블록을 형성하며, TCP 헤더에는 포트 번호, 시퀸스 번호, 오류 검출 코드 등이 포함
이 계층에서는 패킷 전달 경로를 결정하고, IP 주소를 통해 목적지를 찾음
패킷(Packet)이라는 형태로 데이터를 캡슐화하며, IP 헤더에는 출발지 IP 주소, 목적지 IP 주소, 패킷 번호 등이 포함
물리적 주소(MAC 주소)를 기반으로 데이터를 전송하며, 오류 검출과 프레임 동기화를 담당
이더넷(Ethernet) 프로토콜을 주로 사용, LAN(Local Area Network)에서 주로 사용
이더넷은 CSMA/CD (Carrier Sense Multiple Access with Collision Detection)를 사용하여 충돌을 감지하고 데이터를 재전송하는 메커니즘을 가짐
프레임(Frame)으로 캡슐화되며, 여기에는 출발지 및 목적지 MAC 주소, 오류 검출을 위한 FCS(Frame Check Sequence) 등이 포함
데이터를 실제 전송 매체를 통해
비트(Bit)단위로 전송
이 계층에서는 더 이상 추가되는 헤더는 없고, 프레임이 전기 신호나 광 신호 등으로 변환되어 전송
수신 측에서 데이터의 캡슐화를 역순으로 해제하며 원래의 데이터를 복원하는 과정. 수신된 데이터는 물리 계층에서 시작하여 각 계층을 거치면서 헤더를 제거하고, 최종적으로 응용 계층에 도달하여 사용자가 사용할 수 있는 데이터 형태로 복원
전송된 신호를 비트 단위로 변환하여 상위 계층으로 전달
프레임에서 MAC 주소를 확인하고, 오류 검사를 수행한 후, 프레임 헤더를 제거하고 상위 계층으로 전달
IP 헤더를 제거하고 목적지 IP 주소를 확인하여 적절한 상위 계층으로 데이터를 전달
세그먼트에서 포트 번호, 시퀀스 번호를 확인하고, 데이터의 흐름을 제어하며 세그먼트 헤더를 제거
세션 관리를 통해 데이터가 올바르게 전달되었는지 확인한 후, 데이터를 상위 계층으로 전달
데이터의 형식 변환, 복호화, 압축 해제 등을 수행
최종적으로 사용자가 사용할 수 있는 데이터 형태로 변환된 메시지가 응용 프로그램에 전달됩니다.
- 계층화된 네트워크 설계
- 기능의 분리
- 표준화 및 호환성
- 에러 검출 및 수정
- 데이터의 효율적 전달
- 유연성
- 디버깅 용이성
- 확장성
- 보안
- 모듈화
0번 ~ 1023번 포트를 System Ports 또는 Well-Known Ports라고 함
이 범위의 포트는 특정 서비스를 위해 예약됨
| 이름 | 번호 | 프로토콜 | 설명 |
|---|---|---|---|
| HTTP | 80 | TCP, UDP | 평문 통신 |
| HTTPS | 443 | TCP | 암호화된 HTTP |
| SSL | 443 | TCP | 데이터 암호화 |
| FTP | 20, 21 | TCP | 20: 데이터 포트, 21: 제어 및 인증 포트 |
| SSH | 22 | TCP | 원격 호스트에 접속하려고 사용되는 보안 프로토콜 |
| Telnet | 23 | TCP | 평문 |
| SMTP | 25 | TCP | 이메일 전송 |
| DNS | 53 | TCP, UDP | 도메인을 IP주소로 변경 |
| DHCP | 67 | UDP | 서버와 클라이언트 간의 통신 포트 |
| TFTP | 69 | UDP | 사용자 인증 없이 기본 파일 전송 기능 |
| POP3 | 110 | TCP | 받는 메일 서버 |
| iMAP4 | 143 | TCP | 이메일 |
| NetBios | 137~139 | 137~138은 udp, 139는 tcp | 윈도우 네트워크 프로토콜 |
| SNMP | 161, 162 | UDP | 게이트 웨이 관리 프로토콜 |
| SMB | 445 | TCP | 윈도우 파일 공유 프로토콜 |
1024번 ~ 49151번 포트를 User Port, Registered Ports라고 함
| 이름 | 번호 | 프로토콜 |
|---|---|---|
| RDP | 3389 | 원격 데스크톱 포트 |
49152번 ~ 65535번 포트를 Dynamic Ports라고 함
DB포트
| 이름 | 번호 | 설명 |
|---|---|---|
| MS-SQL | 1433, 1434 | Microsoft |
| My-SQL | 3306 | Oracle |
| Oracle Database | 1521, 1522 | Oracle |
| Derby | 1433, 1434 | Apache |
| PostgreSQL | 5432 | PostgreSQL |
| MongoDB | 27017 ~ 27019 , 28017 | MongoDB |
1:1통신
목적지: 특정ip
1:N 통신, 특정 그룹에게만
목적지: 멀티캐스트 그룹ip > 224.
1:전부통신
목적지: 255.255.255.255
| Preamble | SFD | Mac dst | Mac src | Len/Type | Payload | Frame check sequence |
|---|---|---|---|---|---|---|
| 7 | 1 | 6 | 6 | 2 | 46~1500 | 4 |
Preamble: 프레임의 시작을 알리는 신호
비트 패턴: 01010101, 7바이트(총 56비트) 동안 반복
SFD: 프레임의 시작을 표시하는 1바이트 필드, 데이터 프레임의 시작을 명확히 알림
비트 패턴: 10101011
Mac dst: 프레임을 수신할 대상 장비의 MAC 주소
Mac src: 프레임을 전송한 대상 장비의 MAC 주소
Len/Type: 이더타입(EtherType) 또는 길이 필드
이더타입: 상위 계층 프로토콜(IPv4, IPv6, ARP 등)을 식별하는 값
길이 필드: IEEE 802.3 표준에서는 이 필드를 데이터 길이로 사용, 길이 필드는 데이터의 길이를 나타내며, 데이터의 최대 길이를 1500바이트로 제한
| 유형번호 | 프로토콜 |
|---|---|
| 0800 | IPv4 |
| 0806 | ARP |
| 0835 | RARP |
| 814C | Ethernet |
| 86DD | IPv6 |
Payload: 상위 계층의 프로토콜로부터 캡슐화 된 데이터. 46~1500byte 크기. 상위계층의 패킷의 길이가 46byte 보다 작을때 끝에 padding(0)으로 채움
MTU(Maximun Transmission Unit): 한 번에 전송 가능한 데이터 패킷의 최대 크기
MTU를 초과하는 데이터는 작은 패킷으로 분할하여 전송
이더넷은 보통 1500byte의 MTU 사용
Internet Protocol
각 장치에 IP 주소를 부여하여 통신하고 식별
IP 주소 체계를 통해 네트워크 상에서 각 장치를 고유하게 식별

IP 헤더
Offsets
IP 패킷이 단편화(fragmentation)될 때 사용되는 개념
IP 패킷이 단편화될 때 각 단편의 위치를 나타내는 값Octet
8비트(1바이트) 단위의 데이터를 나타내는 용어Version
프로토콜 버전
IHL(Internet Header Length)
IP헤더의 길이, 이 값에 따라 옵션 필드의 유무와 길이를 알 수 있다TOS(Type of Service)
패킷 처리의 우선 순위 결정Total Length
IP헤더와 데이터를 포함한 전체 패킷의 길이Identification
패킷을 구분하는 고유번호, 분할된 패킷을 다시 재조립하는데 사용Flags
패킷의 분할 가능 여부와 분할된 패킷의 마지막 조각인지 여부Fragment Offset
분할된 패킷의 순서TTL(Time to Live)
패킷의 생명 주기, 네트워크를 지날 때마다 감소Protocol
상위 계층 프로토콜(TCP, UDP 등)을 나타냄Header Checksum
헤더의 오류 검출을 위한 체크섬Source IP Address
발신자의 IP 주소Destination IP Address
수신자의 IP 주소.
데이터 통신을 위해서는 물리적 주소(MAC 주소)와 논리적 주소(IP 주소)가 필요
두 개의 주소를 연계하기 위해사용되는 프로토콜이 ARP(Address Resolution Protocol)

ARP 헤더
Hardware Type
사용되는 하드웨어 주소의 유형을 지정
예를 들어, 이더넷의 경우 값이 1Protocol Type
변환하려는 상위 계층 프로토콜의 유형을 의미
IPv4의 경우 값이 0x0800Hardware Address Length
물리 주소의 길이를 지정
이더넷의 경우 MAC 주소가 6바이트이므로 이 값은 6Protocol Address Length
프로토콜 주소의 길이를 지정
IPv4 주소의 길이는 4바이트이므로 이 값은 4Operation Code
ARP 메시지가 요청인지 응답인지를 나타냄Request = 1
특정 IP주소에 대한 MAC 주소를 찾기 위한 요청
네트워크 내 모든 장치에게 브로드캐스트, 해당 IP 주소를 가진 장치는 이 요청에 응답하여 자신의 MAC 주소 제공Response = 2
요청에 대한 응답
요청받은 IP 주소에 대한 MAC주소를 포함, 요청을 보낸 장치에게만 응답Sender Hardware Address (6 bytes for Ethernet)
ARP 요청 또는 응답을 보낸 장치의 MAC 주소를 포함Sender Protocol Address (4 bytes for IPv4)
ARP 요청 또는 응답을 보낸 장치의 IP 주소를 포함Target Hardware Address (6 bytes for Ethernet)
목적지 장치의 MAC 주소를 포함
ARP 요청에서는 이 필드가 0으로 설정됩니다(목적지 MAC 주소를 알 수 없기 때문)
ARP 응답에서는 이 필드에 요청된 MAC 주소가 포함Target Protocol Address (4 bytes for IPv4)
목적지 장치의 IP 주소를 포함
ARP 요청에서는 이 주소가 요청하려는 IP 주소를 나타내며, ARP 응답에서는 요청된 IP 주소를 나타냄
Internet Control Message Protocol
네트워크 장치들이 정보를 교환하거나 오류 메시지를 보내는데 사용
라우터와 같은 네트워크 장치 사용
대표적 활용: Ping, Traceroute, Tracert

ICMP 헤더
Type
ICMP 메시지의 유형Code
ICMP 메시지의 서브 유형
이 필드는 Type 필드에 대한 추가적인 정보를 제공
예를 들어,Type이 3(Destination Unreachable)일 때,Code가 0이면Network Unreachable(네트워크 도달 불가)을 의미하고,Code가 1이면Host Unreachable(호스트 도달 불가)을 의미,Checksum
ICMP 헤더와 데이터를 포함한 전체 ICMP 메시지의 오류 검사를 위한 필드
데이터가 전송 중 손상되었는지 확인하는 데 사용Rest of Header
이 필드는 Type 및 Code에 따라 다른 정보를 담음
예를 들어, Echo Request와 Echo Reply 메시지에서는 식별자와 시퀀스 번호를 담고 있으며, 오류 메시지에서는 문제가 된 IP 패킷의 일부를 담고 있을 수 있다Echo Request/Reply의 경우:
Identifier (2 bytes): 요청과 응답을 일치시키기 위한 식별자
Sequence Number (2 bytes): 요청과 응답을 일치시키기 위한 시퀀스 번호Destination Unreachable의 경우:
Unused (2 bytes): 사용되지 않음
Next-Hop MTU (2 bytes): 다음 홉의 MTU (Path MTU Discovery에서 사용)Data
ICMP 메시지의 추가 데이터를 포함
예를 들어, Ping 명령에서 Echo Request 메시지를 보낼 때 데이터 필드는 임의의 바이트로 채워짐
오류 메시지의 경우, 이 필드에는 문제가 된 원본 IP 패킷의 헤더와 처음 8바이트(즉, TCP/UDP 헤더의 일부)를 포함

4계층인 전송계층에서 사용
신뢰성 있는 연결을 제공, 데이터의 순서 보장 및 오류 복구 수행
1대1 통신(Point-to-Point)
TCP에서 통신을 하기 전, 신뢰성 있는 연결을 확립하기 위해 세 번의 패킷 교환(SYN, SYN-ACK, ACK)을 수행하는 과정


TCP 헤더
Source Port (출발지 포트, 16비트)
송신 측 애플리케이션의 포트 번호Destination Port (목적지 포트, 16비트)
수신 측 애플리케이션의 포트 번호Sequence Number (순서 번호, 32비트)
세그먼트 안의 첫 번째 바이트에 대한 순서 번호
송신된 데이터의 순서를 추적하고, 수신 측에서 데이터가 올바르게 재조립되도록 도움Acknowledgment Number (확인 응답 번호, 32비트)
수신 측에서 다음으로 기대하는 바이트의 순서 번호
송신 측에 데이터가 성공적으로 수신되었음을 알리는 데 사용Data Offset (데이터 오프셋, 4비트)
TCP 헤더의 크기를 바이트 단위로 나타내며, 데이터가 시작되는 위치를 알림Reserved (예약 비트, 3비트)
미래에 사용하기 위해 예약된 필드
현재는 0으로 설정Flags (플래그, 9비트)
제어 플래그로, TCP 연결의 상태와 흐름을 제어
주요 플래그는 아래와 같음URG: Urgent Pointer 필드가 유효함을 나타냄
ACK: Acknowledgment Number 필드가 유효함을 나타냄
PSH: 데이터가 즉시 전달되어야 함을 나타냄
RST: 연결을 재설정할 때 사용
SYN: 연결을 시작할 때 사용
FIN: 연결을 종료할 때 사용Window Size (윈도우 크기, 16비트)
수신 측에서 수신할 준비가 된 데이터의 양
흐름 제어에 사용
매번 응답을 기다리는 대신 연속으로 세그먼트를 보내고 확인 응답을 반환하면 효율이 높아지지만 상대방에는 세그먼트가 점점 쌓임
상대방에게 쌓인 세그먼트는 버퍼(buffer)라는 장소에 일시적 보관
버퍼(buffer) 덕분에 세그먼트를 연속해서 보내도 수신측에서 대응 가능 및 효율도 오름Checksum (체크섬, 16비트)
헤더와 데이터의 무결성을 확인하기 위해 사용
수신 측에서 데이터가 손상되지 않았는지 확인Urgent Pointer (긴급 포인터, 16비트)
URG 플래그가 설정된 경우에만 사용
긴급 데이터의 끝을 나타냄Options (옵션, 가변 길이)
확장 가능한 옵션 필드
최대 320 비트까지 가변 길이
예를 들어, 최대 세그먼트 크기(MSS)를 지정하는 데 사용Padding (패딩, 가변 길이)
헤더의 크기를 32비트의 배수로 맞추기 위해 사용
Window Size 작을 때

Window Size 클 때

User Datagram Protocol
비연결성
신뢰성 없는 전송 프로토콜
흐름 제어, 오류 제어, 손상된 세그먼트 수신의 재전송을 하지 않음
덕분에 전송속도가 빠름
주로 유튜브같은 영상 재생에 사용

Source Port
패킷의 수신지 식별Destination Port
패킷의 목적지 식별Length
UDP 헤더와 데이터의 전체 길이Checksum
데이터그램의 오류 검출