Layer 1 : 물리 계층(Physical layer)
전기, 기계적인 신호를 주고받는 역할을 하는 계층
디지털에서 아날로그 혹은 그 반대로 신호를 변환
OSI 모델에서 가장 복잡한 계층
전송 단위 : 비트(Bit)
대표적인 장비 : 통신 케이블, 허브, 리피터, 어댑터 등등
Layer 2 : 데이터링크 계층(Data link layer)
물리적인 연결을 통해 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당하는 계층
에러 검출, 재전송, 흐름 제어 역할을 함
Point-To-Point 전송
MAC 주소를 통해 통신
전송 단위 : 프레임(Frame)
대표적인 장비 : 스위치, 브릿지, 이더넷 등등
Layer 3 : 네트워크 계층(Network layer)
종단 간 주소(IP)를 정하고 경로(Route)를 선택하고 패킷(Packet)을 전달하는 계층
End-To-End 혹은 Host-To-Host 전송
라우팅 기능을 맡고 있으며 목적지까지의 최적경로 알고리즘을 사용
전송 단위 : 패킷(Packet)
대표적인 장비 : 라우터, L3 스위치, IP 공유기
Layer 4 : 전송 계층(Transport layer)
종단 간 신뢰성 있고 정확한 데이터 전송을 담당하는 계층
신뢰성 있고 효율적인 데이터 전송을 위해 오류 검출, 복구, 흐름 제어, 중복 검사 등을 수행
데이터 전송을 위해 Port번호 사용
전송 단위 : TCP-세그먼트(Segment), UDP-데이타그램(Datagram)
방화벽이나 프록시 서버가 여기에 해당
Layer 5 : 세션 계층(Session layer)
통신 장치 간의 상호작용 및 동기화를 제공하는 계층
TCP/IP 세션을 만들고 없애는 역할
통신을 하기 위한 세션을 확립, 유지, 중단하는 역할
연결 세션에서 데이터 교환과 에러 발생 시 복구 관리
Layer 6 : 표현 계층(Presentation layer)
데이터를 어떻게 표현할지를 정하는 역할을 하는 계층
데이터 인코딩/디코딩, 압축/해제, 암호화/복호화 수행
Layer 7 : 응용 계층(Application layer)
사용자와 가장 밀접한 계층으로 인터페이스 역할을 하는 계층
응용 프로세스 간의 정보 교환을 담당
텔넷, 크롬, 이메일, 데이터베이스 관리 등등의 서비스가 여기에 해당
TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 하게 됩니다. 연결 지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장합니다.
흐름 제어: 보내는 측과 받는 측의 데이터 처리속도 차이를 조절해주는 것
혼잡 제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
🔎 특징
연결형 서비스로 가상 회선 방식을 제공
데이터의 전송 순서 보장
데이터의 경계를 구분하지 않음
신뢰성 있는 데이터 전송
UDP보다 전송속도가 느림
연결을 설정(3-way handshaking)과 해제(4-way handshaking)
UDP는 비연결형 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다. TCP와는 다르게 연결 설정이 없으며, 혼잡 제어를 하지 않기 때문에 TCP보다 전송 속도가 빠릅니다. 그러나 데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있습니다.
🔎 특징
비연결형 서비스로 데이터그램 방식을 제공
비신뢰성
데이터의 경계를 구분
패킷 오버해드가 적어 네트워크 부하 감소
혼잡 제어를 하지 않기 때문에 TCP보다 빠름
TCP의 handshaking 같은 연결 설정이 없음
TCP(Transfer Control Protocol) | UDP(User Datagram Protocol) |
---|---|
연결형 프로토콜 | 비연결형 프로토콜 |
데이터의 경계를 구분하지 않음 | 데이터의 경계를 구분함 |
신뢰성있는 데이터 전송 (데이터 재전송 존재O) | 비신뢰성 데이터 전송 (데이터 재전송 존재X) |
일 대 일(Unicast) 통신 | 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신 |
step 1 (클라이언트 -> 서버)
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태 가 된다.
step 2 (서버 -> 클라이언트)
이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. (Closed :닫힌상태) B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
step 3 (클라이언트 -> 서버)
A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
정리왕