웹 서비스, 이메일 등 사용자들에게 실질적으로 서비스를 제공하는 계층
→ HTTP, SMTP, SSH, FTP, DNS
PDU: Message
HTTP (Hypertext Transfer Protocol): 인터넷에서 정보를 주고 받기 위해 사용되는 프로토콜
- 클라이언트 ↔ 서버, Web Scraping
- 헤더를 통한 확장: HTTP 요청 및 응답 헤더를 사용하여 프로토콜을 확장하거나 부가 정보를 제공
- stateless: HTTP는 상태를 저장하지 않는 특징(stateless)을 가지며, 서버는 이전 요청과의 상태를 유지하지 않는다.
→ 서버가 각 요청을 독립적으로 처리할 수 있도록 하며, 확장이 쉽고 구현을 단순화할 수 있다.
SSH (Secure SHshell Protocol): 네트워크 프로토콜 중 하나로 보안이 강화된 원격 접속을 제공하는 프로토콜
- 원격 접속: SSH는 원격 서버 또는 호스트에 안전하게 접속하기 위해 사용
- 발급받은 pem key를 통해 네트워크 접속해서 CLI 작업 수행
→ 로컬 PC에서 AWS EC2 접속
FTP (File Transfer Protocol): 노드 간에 파일을 전송하는 데 사용되는 네트워크 프로토콜
- 암호화 버전: FTPS
- FTP를 사용하여 웹 호스팅 서버에 파일을 업로드하거나 다운로드하는 것
SMTP (Simple Mail Transfer Protocol): 인터넷을 통해 전자메일을 보낼 때 사용되는 프로토콜
- SMTP는 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있는 라이브러리 및 모듈이 있다.
DNS (Domain Name System): 도메인 이름을 IP 주소로 변환해주는 시스템
- "www.naver.com"을 해당 도메인에 대한 IP 주소 (예: "210.89.160.88")로 매핑
- 사용자가 웹 브라우저에 도메인 이름을 입력하면, DNS는 해당 도메인 이름을 해당 웹 서버의 IP 주소로 매핑하여 사용자의 브라우저가 웹 페이지에 액세스할 수 있게 한다.
데이터 송수신 및 논리적인 종단 간 통신을 제공하며, 데이터 전송의 신뢰성과 효율성을 확보하기 위한 역할을 가진다.
PDU: Segment(TCP), Datagram(UDP)
TCP (Transmission Control Protocol)
- Reliable(신뢰성): 데이터가 손실되거나 손상될 경우 데이터를 재전송하거나 오류 복구를 시도하여 완전한 데이터 전달을 보장
- In-Order delivery(순서 보장): 패킷에 번호를 부여하여 전송한 순서대로 수신 측에 전달
→ 가상회선 교환방식 사용: 데이터 통신에서 경로가 미리 설정된 가상회선을 통해 패킷을 전송하여 순서와 신뢰성을 보장하는 방식- Congestion control(혼잡 제어): 전송 속도를 조절하여 네트워크 부하를 조절
- Flow control(흐름 제어):수신 측이 처리할 수 있는 속도로 데이터를 전송하도록 조절하여 버퍼 오버플로우 등으로 인한 패킷 손실을 방지
- Connection setup (연결 설정): 연결 지향 프로토콜로, 통신 시작 시 3-way handshake를 통해 세션을 수립하고 통신을 마치면 4-way handshake를 통해 세션을 안전하게 종료
→ 데이터 전송에 대한 안정성 보장- TCP 헤더 크기: 20 ~ 60바이트로 가변적
UDP (User Datagram Protocol)
- Unreliable(신뢰성 없음): 데이터 손실 및 손상에 대해서 보장 또는 복구를 진행하지 않는다.
- Unordered delivery: 패킷의 전송 순서와 상관없이 수신 측에 전달
- Connection-less: 별도의 연결 설정 절차 없이 호스트 간에 패킷을 주고 받는다.
- 낮은 오버헤드: 더 간단한 헤더 구조를 가지고 있고, connection-less하기 때문에 오버헤드가 적다.
→ 대역폭↓, 데이터 전송↑- 실시간 통신: 데이터의 빠른 전달을 지향하므로 실시간 음성 및 비디오 스트리밍과 같은 응용 프로그램에 적합하다.
- UDP 헤더 크기 : 8바이트 고정
데이터 패킷이 출발지에서 목적지로 가는 경로를 결정하는 역할을 담당하는 프로토콜 (비연결형)
PDU: Packet
ICMP (Internet Control Message Protocol): 인터넷에서 노드 간 통신이 정상적으로 작동하는지 확인하기 위해 사용되는 독립적인 프로토콜
- 네트워크 상태 및 통신의 정상성을 확인하고 관리하기 위한 목적
→ 데이터를 교환하는데 사용되는 프로토콜이 아니다.- 예시: 'ping' 명령어를 사용한 ICMP 패킷은 대상 호스트로 보내어 해당 호스트가 응답하는지 확인할 수 있다.
Link layer: 데이터가 유선 또는 무선 전송 매체를 통해 물리적으로 전송되는 방식을 정의하는 계층
- 에러 감지 및 수정, 흐름 제어, MAC 주소 관리, 그리고 CRC 체크섬 등의 작업을 수행
- CRC checksum: 데이터에 수학적 함수가 적용된 값으로, 데이터가 송신되는 동안 변형되거나 손상되었을 때 오류를 식별하는 데 사용데이터의 오류를 감지하기 위해 수학적 함수가 적용된 알고리즘
- PDU: Frame
Physical layer: 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
TCP/IP 5계층: 미국 국방부에서 정의한 표준 네트워크 통신 모델이며 현재 실질적으로 사용되는 표준 모델이다.
OSI 7계층: TCP/IP 표준 모델이 등장한 이후에 만들어진 모델로, 국제 표준화 기구인 ISO에서 정의한 통신 모델로서 컴퓨터 기기 간에 상관없이 통신할 수 있도록 설계되었다.
TCPI/IP 5계층 VS OSI 7계층
- OSI 7계층은 TCP/IP 5계층 모델에서 Present, Session 계층이 추가 되었다.
- Present: 통신하는 두 노드 간의 데이터 표현을 통일화
→ Encoding, Decoding, ASCII & Binary 형식 통일- Session: 네트워크 통신 세션의 설정, 관리, 및 종료를 담당
→ 음성 및 영상 통화 서비스에서는 세션 계층을 사용하여 통화 세션을 설정하고 관리
→ 웹 브라우저와 웹 서버 간의 세션을 설정하고 관리- TCP/IP 5계층 모델에서는 OSI 7계층의 Present 및 Session 계층의 역할을 Application 계층에서 처리한다.
이로써 TCP/IP 모델은 OSI 모델보다 간단하며, Application 계층에서 상위 계층의 역할을 통합적으로 수행하게 된다.