ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP/IP 4계층
    개발/네트워크 2023. 6. 11. 16:23

    TCP/IP

    - 인터넷 프로토콜 스위트 (Internet Protocol Suite) 중 가장 많이 사용되는 프로토콜

    - IP(Internet Protocol)는 패킷 통신 방식: 패킷 전달 여부를 보증하지 않음, 패킷을 보낸 순서와 받는 순서가 다를 수 있음

      - 데이터의 패킷화, 주소 지정, 라우팅

    - TCP(전송 조절 프로토콜, Transmission Control Protocol): IP위에서 동작하는 프로토콜, 데이터의 전달을 보증하고 보낸 순서대로 받게 만듦

      - 데이터 분할, 재전송, 흐름 제어

    - HTTP, FTP, SMTP 등은 TCP 기반의 애플리케이션 프로토콜

    -> 송신자가 수신자에게 IP 주소를 사용하여 데이터를 전달, 그 데이터의 송수신에 대해 잘 전달받았는지 확인

     

    TCP/IP & OSI 비교

    OSI 7계층과 TCP/IP 4계층 비교 (출처: 위키피디어)

    Transport Layer (Layer 4):

    - 송수신자간의 논리전 연결을 담당, 엔드포인트(사용자)간의 연결을 생성하고 데이터를 얼마나 보냈는지 확인

    - TCP와 UDP가 대표적인 프로토콜

     

    Network Layer (Layer 3):

    - IP를 활용하는 부분

    - 다른 엔드포인트로 갈 때, 경로와 목적지를 찾아주는 역할 (라우팅)

    TCP의 구성과 구조

    시작: TCP 3 Way-Handshake & 종료: TCP 4 Way-Handshake

    - 장치들 사이에 논리적인 접속을 성립하기 위해 사용

    - TCP 연결 및 종료를 설정하기 위해 클라이언트와 서버 간에 주고받는 세 번 또는 네 번의 패킷 교환 과정

    - 양쪽 모두 데이터 전송에 대한 준비가 되었다는 것을 보장 + 다른 한쪽이 준비 되었는지 확인

    - 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻음

     

    3 Way Handshake
    1. 클라이언트가 서버에게 SYN(Synchronize) 패킷을 전송. 이 패킷에는 클라이언트의 초기 시퀀스 번호가 포함.
    2. 서버는 클라이언트의 SYN 패킷을 받고, SYN-ACK(Synchronize-Acknowledgment) 패킷을 클라이언트로 응답. 이 패킷에는 서버의 초기 시퀀스 번호와 클라이언트의 시퀀스 번호에 1을 더한 값이 포함.
    3. 클라이언트는 서버의 SYN-ACK 패킷을 받고, ACK(Acknowledgment) 패킷을 서버로 응답. 이 패킷에는 서버의 시퀀스 번호에 1을 더한 값이 포함.
    -> 3 Way-Handshake가 완료되면 클라이언트와 서버 간에 신뢰성 있는 연결이 설정

    -> 클라이언트와 서버는 이후 데이터를 안전하게 주고받을 수 있게 됩니다.

    4 Way Handshake
    1. 클라이언트가 서버에게 연결 종료를 알리는 FIN(Finish) 패킷을 전송.
    2. 서버는 클라이언트의 FIN 패킷을 받고, ACK 패킷으로 응답. 이때 서버는 아직 보낼 데이터가 남아있을 수 있으므로, 연결 종료를 지연 (Sever's Status: TIME_WAIT).
    3. 서버가 모든 데이터를 전송하고 연결을 종료할 준비가 되었다면, 클라이언트에게 FIN 패킷을 전송.
    4. 클라이언트는 서버의 FIN 패킷을 받고, ACK 패킷으로 응답. 이때 클라이언트는 일정 시간 동안 연결 상태를 확인(Client's Status: TIME_WAIT, Default: 240 sec)하다가 연결을 종료.
    -> 4 Way-Handshake가 완료되면 클라이언트와 서버 간의 TCP 연결이 정상적으로 종료

    -> 양쪽 모두가 데이터를 모두 송수신한 후에 연결을 종료하는 과정입니다.

     

    TCP Header & Segment

    1. TCP 헤더 (TCP Header):
       - 송신지 포트 (Source Port)와 목적지 포트 (Destination Port): 송신지와 목적지 애플리케이션을 식별하기 위한 포트 번호
       - 시퀀스 번호 (Sequence Number): 데이터 스트림의 순서를 지정하기 위한 번호
       - 확인 응답 번호 (Acknowledgment Number): 수신한 패킷들 중에서 기대하는 다음 패킷의 시퀀스 번호를 의미
       - 데이터 오프셋 (Data Offset): TCP 헤더의 길이를 나타내며, 4바이트 단위로 표현
       - 제어 플래그 (Control Flags): 예를 들어 SYN, ACK, FIN 등의 제어 비트를 포함하여 TCP 연결 및 종료를 제어
       - 윈도우 크기 (Window Size): 수신 측이 수용할 수 있는 데이터의 양
       - 체크섬 (Checksum): 오류 검출을 위한 체크섬 값
       - 그 외의 옵션 (Options): 최대 세그먼트 크기 (MSS), 유리창 확장 등 추가적인 옵션 정보를 포함


    2. TCP 세그먼트 (TCP Segment):
       - TCP 헤더와 애플리케이션 데이터로 구성
       - 세그먼트는 전송되는 데이터의 단위이며, TCP 헤더와 함께 전송되어 TCP 연결 상에서 패킷을 형성

    TCP와 UDP 비교하기

    1. TCP (Transmission Control Protocol):
       - 연결 지향 프로토콜: TCP는 연결을 수립하고 유지한 후 데이터를 전송하는 연결 지향 프로토콜
       - 신뢰성: TCP는 데이터의 신뢰성을 보장하기 위해 확인 응답, 재전송, 흐름 제어, 혼잡 제어 등의 기능을 제공. 데이터의 손실이나 손상이 발생하면 재전송을 통해 보정.
       - 지연: TCP는 데이터의 신뢰성을 위해 추가적인 오버헤드를 가지고 있기 때문에 일부 지연이 발생할 수 있음.
       - 사용 예시: 파일 전송, 웹 페이지 로딩, 이메일 전송 등 신뢰성이 중요한 데이터 전송에 주로 사용.

    2. UDP (User Datagram Protocol):
       - 비연결성 프로토콜: UDP는 연결을 수립하지 않고 단순히 데이터를 전송하는 비연결성 프로토콜. 데이터 패킷을 독립적으로 전송하며, 순서가 보장되지 않고 데이터의 신뢰성을 보장하지 않음.
       - 신뢰성: UDP는 데이터 전송에 대한 오류 검사만 수행하고, 재전송이나 확인 응답 기능을 제공하지 않음. 따라서 데이터의 손실이나 손상이 발생하면 별도의 처리가 필요.
       - 지연: UDP는 신뢰성을 위한 추가적인 오버헤드가 없기 때문에 TCP보다 더 낮은 지연 시간을 가짐.
       - 사용 예시: 실시간 스트리밍, DNS 조회, 음성 및 영상 통화 등 신속한 데이터 전송이 요구되는 경우에 주로 사용.

    UDP(User Datagram Protocol)의 프로토콜 구조
    1. 송신지 포트 번호 (2바이트): UDP 패킷을 송신하는 애플리케이션을 식별하기 위한 포트 번호
    2. 목적지 포트 번호 (2바이트): UDP 패킷을 수신하는 애플리케이션을 식별하기 위한 포트 번호
    3. UDP 길이 (2바이트): UDP 패킷의 전체 길이, 헤더와 데이터를 합친 길이
    4. 체크섬 (2바이트): 오류 검출을 위한 체크섬 필드. 송신 측에서 패킷을 생성할 때 체크섬을 계산하고, 수신 측에서는 체크섬을 다시 계산하여 송신 측과 비교하여 패킷의 완전성을 검증.
    5. 데이터 (가변 길이): 실제로 전송되는 데이터. UDP는 데이터의 신뢰성을 보장하지 않으므로, 데이터의 순서나 손실 여부에 대한 보장을 하지 않음.

    서버와 클라이언트의 UDP 통신 과정

    1. 서버 초기화:
       - 서버는 특정 포트 번호를 할당하여 대기 상태로 진입
    2. 클라이언트 초기화:
       - 클라이언트는 서버의 IP 주소와 포트 번호를 알고 있어야 함
    3. 클라이언트에서 서버로 데이터 전송:
       - 클라이언트는 서버의 IP 주소와 포트 번호를 목적지로 하는 UDP 패킷을 생성
       - 패킷에는 전송할 데이터가 포함
       - 클라이언트는 생성한 패킷을 네트워크로 전송
    4. 서버에서 클라이언트로 데이터 전송:
       - 서버는 클라이언트로부터 전송된 UDP 패킷을 수신
       - 패킷에 포함된 데이터를 서버가 처리하고, 필요한 응답을 생성
       - 서버는 생성한 응답을 클라이언트의 IP 주소와 포트 번호를 목적지로 하는 UDP 패킷에 담아 네트워크로 전송
    5. 클라이언트에서 서버로부터 응답 수신:
       - 클라이언트는 서버로부터 전송된 UDP 패킷을 수신
       - 패킷에 포함된 데이터를 클라이언트가 처리하고, 필요한 동작을 수행

    - UDP 통신은 연결 지향적인 특성을 가지지 않으므로, 클라이언트와 서버는 서로의 상태를 추적하지 않고 독립적으로 통신

    -  데이터의 신뢰성이 보장되지 않으므로 패킷의 손실이나 순서 변경이 발생할 수 있음

     

    참고

    - TCPIP 쉽게 이해하기

    - TCP와 UDP의 특징과 차이

     

    [TCP/UDP] TCP와 UDP의 특징과 차이

    오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보려고 합니다. 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의

    mangkyu.tistory.com

     

    '개발 > 네트워크' 카테고리의 다른 글

    SSH (Secure Shell Protocol) 개념  (0) 2023.06.13
    OSI 7 계층 정리  (0) 2023.06.08
    와이파이(Wi-Fi)의 통신 방식  (0) 2023.06.01
    다중화(Multiplexing) 방식 정리  (0) 2023.05.31
    네트워크 전송 매체 정리  (0) 2023.05.28
Designed by Tistory.