: TCP란 Transmission Control Protocol의 약자로 전송을 제어하는 규약
이라는 뜻이다.
Internet 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 규악
TCP는 패킷을 추적 및 관리
하고 IP 는 데이터의 배달을 처리
한다.
❗️ 패킷(Packer)
이란 ?
인터넷 내에서 데이터 전송을 위한 라우팅을 효율적으로 하기 위해 나누어진 조각들을 뜻한다
연결형(connection-oriented)
서비스로 연결이 성공해야 통신이 가능하다.(byte stream service)
TCP 세그먼트의 연속된 데이터 번호
상대방
으로부터 받아야하는 다음 TCP 세그먼트 데이터 번호
(3-way handshaking), 해제(4-way handshacking)
전이중(Full-Duplex)
, 점대점(Point to Point)
서비스: 3 way handshake
방식은 서로의 통신을 위해 관문(port)를 확인하고 연결하기 위해 3번의 요청/응답(SYN, ASK)
이 되는 것을 말한다.
이 과정이 시간 가장 많이 소요되는데, UDP 방식보다 속도가 느려지는 주요 원인으로 주목된다.
SYN_RCV
로 상태가 변경된다.ESTABLISHED
로 상태를 변경하고 서버에 ACK 를 전송한다.ESTABLSHED
로 변경된다. 위의 음영표시 부분이 3번의 통신과정이다.
TCP state (Command Line : netstat)
- LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
- SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
- SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
- ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
- FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
- TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
- CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
- CLOSED : 완전히 종료
UDP(User Datagram Protocol)는 전송계층의 비연결 지향적 프로토콜
을 뜻한다.
비연결 지향적
이란 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미한다.
❗️ 연결 과정이 없기 때문에 TCP 보다 빠른 전송이 가능하지만!! 데이터가 유실
될 수 있고, 데이터 패킷을 순차적으로 보내더라도 먼저 보낸 패킷이 느린 선로를 통해 전송
될 경우 나중에 보낸 패킷보다 늦게 수신
될 수 있다.
❗️ 데이터그램 방식
데이터그램 방식은 데이터 전송 전에 송/수진자 사이에 가상 회선이라 불리는 논리적 경로를 설정하지 않고, 패킷들이 각기 독립적으로 전송되는 방식이다.
(주로 OSI7계층 중 네트워크 계층에서 사용)
프로토콜 종류 | TCP | UDP |
---|---|---|
연결방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서 변경 가능 |
수신 여부 확인 | 수신 여부를 확인 | 수신 여부 비확인 |
통신 방식 | Point to Point(1:1) | N:N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
티스토리 - Tech Interview
티스토리 - 코딩팩토리
티스토리 - 망나니개발자
개인적으로 공부하며 기록한 내용으로, 틀린 내용이 있는 경우 덧글을 달아주시면 감사하겠습니다. 😍