[네트워크] OSI 7 계층 - 전송 계층
전송 계층 (Transport Layer)
● 네트워크 통신에서 종단간(end-to-end) 데이터 전송을 신뢰성 있게 보장하는 역할
● 송신 측과 수신 측 사이의 연결을 관리하고 데이터 전송의 효율성과 안정성을 제공
● 대표적으로 연결형과 비연결형 프로토콜이 있는데 TCP, UDP가 있다.
TCP(Transmission Contorl Protocol, 전송 제어 프로토콜)
● 인터넷을 통해 디바이스에서 웹 서버로 데이터를 전송하는 프로토콜
● TCP/IP 프로토콜로 불리기도 함
● 메신저에서 채팅, 이메일, 온라인 동영상 시청, 웹 검색 할 때 주로 사용
● 연결형 프로토콜?
○ 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 유지
○ 데이터가 온전하게 도착하도록 보장
○ 신뢰성을 보장하기 때문에 TCP는 네트워크 프로토콜 중 가장 많이 사용됨
● TCP를 사용했을 때 장점 :
- 운영체제와 독립적으로 작동하기 때문에 시스템과 디바이스 간 상호 운용성 향상
- 데이터 전송할 때 오류를 검사하여 전송된 데이터가 목적지에 온전하게 도달 보장
- 수신자의 용량에 따라 데이터를 전송하는 속도 최적화하고 변경
- 데이터가 목적지에 도달했는지 확인하고 전송 실패 시 재전송 시도
● 장점만 있을까... 단점도 있다!
- 대역폭 사용이 많다
- 전송 중 소량의 데이터라도 손실되면 다른 정보를 로드하지 못함
→ 예) 이미지나 동영상 같은 한 요소가 로드되지 않으면 나머지 페이지 데이터도 로드 안됨
- 근거리 통신망이나 개인 영역 네트워크에서는 적합하지 않음
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)
● TCP에 비해 안정성은 떨어지지만 더 빠르고 간단
● 스트리밍, 게임과 같이 빠른 속도가 중요한 상황에서 자주 사용
→ 특히, 격투 게임
● 비연결형 프로토콜
○ 두 사용자 간에 사전 연결을 설정하지 않는다.
○ 데이터 손실이 있을 수 있지만, 그 대신 빠른 속도 얻을 수 있음
● UDP 장점 :
- 작은 패킷을 더 적은 오버헤드로 전송하여 end-to-end 지연을 줄인다.
- 일부 패킷이 누락되더라도 데이터를 전송하기 때문에 패킷 손실로 인해
전체 전송이 중단되지 않는다.
- 브로드캐스트 및 멀티 캐스트 기능을 통해 하나의 UDP 전송을 여러 수신자에게
한 번에 전송이 가능하다.
● 단점 :
- 데이터 패킷이 목적지에 성공적으로 도달했지는 여부 확인하지 않음
- 전송이 온전하게 도착한다는 보장이 없음
- 특정 순서로 데이터를 전송하지 않으므로 패킷은 무작위로 도착함
TCP HandShake에 대해서
● TCP 3-way HandShake
- 장치들 사이에 논리적인 접속을 성립하기 위해 사용
- TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에
먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 맞추는 과정을 의미
- 간단하게 말하면 서버가 오픈 되었을 때 앱에서 서버에 접속하는 과정
- 어떤 과정이 일어나는지 간단 표현과 그림 ▼
Client → Server : TCP SYN
Server → Client : TCP SYN ACK
Client → Server : TCP ACK

● 4-way HandShake
- 세션을 종료하기 위해 수행되는 절차
- 서버가 닫으려고 할 때 앱에게 '나 서버 닫는다?'를 알려주는 과정
- 어떤 과정이 일어나는지 간단 표현과 그림 ▼
Client → FIN → Server
Server → ACK → Client
Server → FIN → Client
Client → ACK → Server
