회선교환 방식
발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결한다.
상대가 다른상대와 연결중이라면 그 연결이 끊어지고 나서 상대방과 연결할 수 있다.
특정회선이 끊어진 경우에는 처음부터 다시 연결을 성립해야 한다.
➡️ 회선교환 방식의 비효율
: 즉시성이 떨어진다.
패킷교환 방식
패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식
각 패킷에는 출발지와 목적지 정보가 있고 이에 따라 패킷이 목적지를 향해 가장 효율적인 방식으로 이동한다.➡️ 특정회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터 전송이 가능하다.
IP(인터넷 프로토콜)
지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달
패킷 :pack
+bucket
IP 패킷 : 패킷을 데이터 통신에 적용한 것
전송 데이터를 무사히 전송하기 위해 출발지 IP, 도착지 IP와 같은 정보가 포함되어 있다.
- 패킷 단위로 전송하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다.
- 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있다.
- 서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야 한다.
- 서버도 IP패킷을 이용해 클라이언트에 응답을 전달한다.
IP 한계- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라질 수 있음
- 패킷의 순서를 보장할 수 없음
OSI 7계층 & TCP/IP 4계층
IP 프로토콜보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 IP 프로토콜의 한계를 보완할 수 있다.
- HTTP 메시지가 생성되면 Socket을 통해 전달
- Socket : 네트워크 환경에 연결할 수 있게 만들어진 연결부
- IP 패킷을 생성하기 전 TCP 세그먼트 생성
- 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임워크에 포함되어 서버로 전송
TCP / IP 패킷
- TCP 세그먼트에는 IP 패킷의 출발지, 도착지IP 정보를 보완할 수 있는
출발지,도착지 PORT, 전송제어, 순서, 검증 정보 등을 포함한다.
TCP 특징(전송 제어 프로토콜 Transmission Control Protocol)- 연결지향 - TCP 3 way handshake(가상연결)
TCP는 장치들 사이 논리적 접속을 성립하기 위해 3 way handshake를 사용한다.
💡 연결 방식
- 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냄
- 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN이 설정된 패킷을 발송함
- 클라이언트가 다시 ACK로 응답하기를 기다림
- 클라이언트가 서버에게 ACK를 보내면 이 이후부터 연결이 되어 데이터 전송이 가능함
- 데이터 전달 보증
데이터 전송이 성공적으로 이루어지면 IP패킷의 한계인 비연결성은 보완할 수 있음
- 순서 보장
패킷이 순서대로 도착하지 않으면 TCP 세그먼트에 다시 패킷 전송을 요청할 수 있음
➡️ IP 패킷의 비신뢰성을 보완할 수 있음- 신뢰할 수 있는 프로토콜
UDP 특징 사용자 데이터그램 프로토콜(User Datagram Protocol)
IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
- 하얀 도화지에 비유(기능이 거의 없음)
- 커스터마이징 가능
- 비 연결지향 - TCP 3 way handshake ❌
- TCP보다 신뢰성은 낮지만 3 way handshake 방식을 사용하지 않아 속도가 빠르다.
- 데이터 전달 보증 ❌
- 순서 보장 ❌
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스(실시간 스트리밍)에 자주 사용됨
TCP vs. UDP
출처, 참조 : 코드스테이츠