TCP/IP란?
패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 프로토콜인 TCP를 의미하면 데이터를 주고 받을때 어떻게 나눌지,어디로 보낼지 ,어떻게 다 시 합칠지를 정의한다.
IP의 역할은
- 데이터를 목적지 까지 전달하는 역활을 한다.
- 패킷이 제[대로 전달되었는지 확인하지는 않는다
- 순서를 보장하지 않는다.
TCP의 역할
- IP 위에서 동작하며 신뢰성 있는 통신을 보장한다
- 패킷이 정확하게 도착했는지 확인
- 보낸 순서대로 정렬하여 다시 조립
TCP(Transmission Control Protocol)
전송 제어 프로토콜로 osi 7계층에서 4계층인 전송 프로토콜에 해당한다.
데이터 전송을 안정적으로 순서대로 에러 없이 전달한다.
- 신뢰성 보장, 흐름제어, 혼잡제어 기능을 할 수 있다.
- 흐름제어란? 데이터의 처리속도를 제어하여 수신자가 데이터를 받는 데에 있어 오버플로우를 방지
- 혼잡에러란? 통신의 혼잡,부하가 생기는 것을 방지
3-way handshake
송신자와 수신자가 데이터 통신하기전 서로 통신이 가능한지 확인하여 정보를 전달하기 위해 사용된다.
이는 신뢰성 있는 통신을 보장하기 위해 반드시 필요한 절차이다.
- SYN (연결 요청)
- 클라이언트가 서버에게 "나 연결하고 싶어!"라고 요청
- TCP 헤더의 SYN 플래그를 1로 설정해 전송
- 이때 클라이언트는 **초기 순서 번호(ISN)**를 설정해 보냄
- SYN + ACK (요청 수락 + 응답)
- 서버는 "좋아, 나도 준비됐어!"라고 응답
- SYN(자신도 연결 요청)과 ACK(클라이언트의 요청 확인)를 함께 보냄
- 서버도 자신의 ISN을 설정해서 전송
- ACK (확인 응답)
- 클라이언트는 "알겠어, 이제 시작하자!"라고 마지막 확인
- 서버가 보낸 ISN에 대해 ACK 응답을 보냄
4-way handshake
TCP 통신이 끝난 후, 연결을 안전하게 종료하기 위한 절차입니다.
양쪽(클라이언트와 서버) 모두 데이터 전송을 완전히 마쳤음을 확인한 후 연결을 끊는 방식
- FIN (연결 종료 요청)
- 클라이언트(또는 서버)가 "이제 보낼 데이터 없어!" 하고 종료 요청
- TCP 헤더의 FIN 플래그를 1로 설정
- → 일방향 연결 종료
- ACK (요청 확인)
- 상대방이 "알겠어, 네가 종료하고 싶다는 거 확인했어" 하고 응답
- → 아직 자신의 데이터는 보낼 수 있음
- FIN (상대방도 종료 요청)
- 상대방도 "나도 이제 다 보냈어!" 하고 종료 요청
- ACK (최종 확인)
- 최초 종료 요청자(예: 클라이언트)가 "응, 확인했어" 하고 응답
- → 연결 완전히 종료
UDP(User Datagram Protocol)란?
osi 7계층에서 4계층인 전송 프로토콜에 해당한
특징으로는 비연결형 서비스로 3-way handshake같은 절차가 없기에 TCP에 비해 신뢰성은 낮고 안정성을 보장하지 못하지만 속도가 빠르다.
주로 실시간 스트리밍,DNS등에 사용한다.
UDP 헤더 구조 (총 8바이트)
필드 크기 설명
Source Port | 2바이트 | 출발지 포트 번호 |
Destination Port | 2바이트 | 목적지 포트 번호 |
Length | 2바이트 | UDP 헤더 + 데이터의 전체 길이 |
Checksum | 2바이트 | 오류 검출용 (옵션에 가까움) |
단점
- 순서 보장 X: 여러 개의 데이터그램이 순서 없이 도착
- 재전송 없음: 손실된 데이터는 자동으로 복구되지 않음
- 혼잡 제어 없음: 네트워크 상태에 따라 전송 속도를 조절하지 않음
반응형
'CS > 네트워크' 카테고리의 다른 글
[네트워크]TCP/IP 와 OSI7 계층 (0) | 2025.06.14 |
---|---|
REST API란 (0) | 2025.05.03 |
HTTP/HTTPS 란? (0) | 2025.05.02 |
[네트워크] 쿠키와 세션 (0) | 2025.03.23 |