CS/네트워크

[네트워크]TCP/IP란?

ari0930 2025. 6. 14. 00:49

TCP/IP란?

패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 프로토콜인 TCP를 의미하면 데이터를 주고 받을때 어떻게 나눌지,어디로 보낼지 ,어떻게 다 시 합칠지를 정의한다.

IP의 역할은

  • 데이터를 목적지 까지 전달하는 역활을 한다.
  • 패킷이 제[대로 전달되었는지 확인하지는 않는다
  • 순서를 보장하지 않는다.

TCP의 역할

  • IP 위에서 동작하며 신뢰성 있는 통신을 보장한다
  • 패킷이 정확하게 도착했는지 확인
  • 보낸 순서대로 정렬하여 다시 조립

TCP(Transmission Control Protocol)

전송 제어 프로토콜로 osi 7계층에서 4계층인 전송 프로토콜에 해당한다.

데이터 전송을 안정적으로 순서대로 에러 없이 전달한다.

  • 신뢰성 보장, 흐름제어, 혼잡제어 기능을 할 수 있다.
    • 흐름제어란? 데이터의 처리속도를 제어하여 수신자가 데이터를 받는 데에 있어 오버플로우를 방지
    • 혼잡에러란? 통신의 혼잡,부하가 생기는 것을 방지

3-way handshake

송신자와 수신자가 데이터 통신하기전 서로 통신이 가능한지 확인하여 정보를 전달하기 위해 사용된다.

이는 신뢰성 있는 통신을 보장하기 위해 반드시 필요한 절차이다.

  1. SYN (연결 요청)
    • 클라이언트가 서버에게 "나 연결하고 싶어!"라고 요청
    • TCP 헤더의 SYN 플래그를 1로 설정해 전송
    • 이때 클라이언트는 **초기 순서 번호(ISN)**를 설정해 보냄
  2. SYN + ACK (요청 수락 + 응답)
    • 서버는 "좋아, 나도 준비됐어!"라고 응답
    • SYN(자신도 연결 요청)과 ACK(클라이언트의 요청 확인)를 함께 보냄
    • 서버도 자신의 ISN을 설정해서 전송
  3. ACK (확인 응답)
    • 클라이언트는 "알겠어, 이제 시작하자!"라고 마지막 확인
    • 서버가 보낸 ISN에 대해 ACK 응답을 보냄

4-way handshake

TCP 통신이 끝난 후, 연결을 안전하게 종료하기 위한 절차입니다.

양쪽(클라이언트와 서버) 모두 데이터 전송을 완전히 마쳤음을 확인한 후 연결을 끊는 방식

  1. FIN (연결 종료 요청)
    • 클라이언트(또는 서버)가 "이제 보낼 데이터 없어!" 하고 종료 요청
    • TCP 헤더의 FIN 플래그를 1로 설정
    • → 일방향 연결 종료
  2. ACK (요청 확인)
    • 상대방이 "알겠어, 네가 종료하고 싶다는 거 확인했어" 하고 응답
    • → 아직 자신의 데이터는 보낼 수 있음
  3. FIN (상대방도 종료 요청)
    • 상대방도 "나도 이제 다 보냈어!" 하고 종료 요청
  4. 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