모든 개발자를 위한 HTTP 웹 기본 지식 Chapter 2

이규훈·2024년 12월 30일

IP

주소
ip 패킷을 만든 다음에 던짐
출발 ip, 목적 ip, 내용넣고 던짐

ip프로토콜 한계
1. 비연결성
-> 대상없거나 불능 상태여도 패킷전송
2. 비신뢰성
중간에 패킷이 사라지거나 패킷이 순서대로 안오면?
3. 프로그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개이상이면(게임하면서 음악들을경우)

해결방법

TCP

HTTP안에 TCP정보 담고 IP패킷생성하고 이더넷프레임(MAC주소 등등)이 포함되어서 나감

TCP/IP패킷정보

패킷 -> 패키지, 정보의 덩어리
출발지 포트, 목적지 포트, 전송제어, 순서, 검증 정보들이 들어감

TCP는 이런 정보들을 통해서 IP의 한계를 극복

TCP 특징

전송제어 프로토콜
연결 지향 - TCP 3 way handshake(가상연결)
데이터 전달 보증
순서 보장
신뢰할 수 있는 프로토콜
현재는 대부분 TCP 사용

3 way 핸드쉐이크


1. 연결
2. ACK메세지를 클라이언트에 보내면서 SYN 보냄
3. ACK반환

연결이 되고 나야지 데이터를 보내서 데이터 전달을 보증함

그러나 이는 개념적으로만 연결(물리적 연결x)

데이터 연결 보증


받는 서버에서 데이터를 정상적으로 받았는지 반환하여 데이터의 연결을 보증함

순서보장


순서를 다르게 보낼경우 다시 보내라고 클라이언트에 보냄

이 이미지는 TCP(Transmission Control Protocol)의 순서 보장 기능에 대해 설명하는 내용입니다. TCP는 데이터를 신뢰성 있게 전달하기 위해 패킷의 순서를 보장합니다. 아래는 TCP의 순서 보장과 관련된 주요 원리와 과정에 대한 자세한 설명입니다:


1. 패킷의 순서 전달

클라이언트는 데이터를 전송할 때 큰 데이터를 여러 개의 작은 패킷으로 나누어 보냅니다. 이때, 각 패킷에는 시퀀스 번호(Sequence Number)가 부여됩니다. 시퀀스 번호는 데이터를 재조립할 때 원래 순서를 알 수 있게 해줍니다.

  • 예시:
    클라이언트(100.100.100.1)는 패킷1, 패킷2, 패킷3을 순서대로 서버(200.200.200.2)로 전송합니다.

2. 패킷 도착 순서의 왜곡

네트워크 환경에서는 여러 가지 이유로 패킷이 전송된 순서대로 도착하지 않을 수 있습니다. 이는 다음과 같은 이유 때문입니다:

  • 네트워크 지연(Latency): 특정 패킷이 경로 상에서 지연될 수 있음.

  • 라우팅 경로 변화: 네트워크 경로가 동적으로 변경될 수 있음.

  • 패킷 손실: 패킷이 손실되고 재전송될 경우.

  • 예시:
    서버는 패킷이 순서대로 도착하지 않아, 패킷1, 패킷3, 패킷2의 순서로 데이터를 수신합니다.


3. TCP의 순서 재조합

TCP는 수신된 패킷이 순서가 어긋난 경우 이를 재조합하는 기능을 제공합니다.

  • 서버는 수신한 패킷의 시퀀스 번호를 확인하여 올바른 순서로 데이터를 재정렬합니다.

  • 순서가 어긋난 패킷이나 손실된 패킷이 발견되면, ACK(Acknowledgment) 메시지를 통해 클라이언트에게 재전송 요청을 보냅니다.

  • 예시:
    서버는 패킷2가 도착하지 않았음을 인지하고, 클라이언트에 패킷2의 재전송을 요청합니다.


4. 패킷 재전송 과정

TCP는 신뢰성 보장을 위해 손실된 패킷을 자동으로 재전송합니다.

  • 서버는 클라이언트에게 손실된 패킷(패킷2)을 요청하며, 클라이언트는 요청된 패킷을 다시 전송합니다.

  • 모든 패킷이 올바른 순서로 도착할 때까지 이 과정을 반복합니다.

  • 예시:
    클라이언트는 서버의 요청에 따라 패킷2를 재전송하며, 서버는 이를 수신하여 데이터를 완성합니다.


5. TCP의 신뢰성 보장 메커니즘

TCP의 순서 보장과 신뢰성은 다음과 같은 핵심 메커니즘을 통해 이루어집니다:
1. 시퀀스 번호와 ACK 번호: 패킷의 순서를 확인하고 누락된 패킷을 요청.
2. 윈도우 크기(Window Size): 전송 데이터를 효율적으로 관리하여 손실을 최소화.
3. 타이머와 재전송: 특정 시간 안에 ACK를 받지 못하면 재전송.


TCP 순서 보장의 중요성

  • 데이터 무결성: 순서가 어긋난 데이터는 애플리케이션에서 오류를 발생시킬 수 있음.
  • 신뢰성: TCP는 전송 계층 프로토콜로서 신뢰성 있는 데이터 전달을 보장함.
  • 재조합 자동화: 개발자는 TCP를 활용해 데이터 순서를 별도로 관리할 필요가 없음.

TCP의 이러한 특성 덕분에 파일 전송, 웹 브라우징, 이메일 등의 애플리케이션이 안정적으로 동작할 수 있습니다. 추가로 더 알고 싶은 부분이 있다면 말씀해주세요!

UDP

사용데 데이터그램 프로토콜

연결지향 x
데이터전달보증x
순서보장 x
IP위에 포트정보만 들어간 정보
포트는 왜 들어간건가 -> 하나의 IP에서 여러 애플리케이션이 실행될텐데 해당 애플리케이션들을 구분할 수 있는 포트
체크섬 정보도 같이 들어감 -> UDP(User Datagram Protocol)의 체크섬은 데이터의 무결성을 확인하기 위한 값으로, 송신자가 패킷을 생성할 때 계산하여 헤더에 포함시키고, 수신자가 이를 다시 계산하여 데이터가 손상되었는지 확인하는 데 사용

최근에 많이 사용 -> HTTP 3.0에서 속도가 TCP보다 빨라서 UDP프로토콜 사용중

PORT

클라이언트 입장에서 여러개의 서버와 통신해야상황에서 각 패킷이 어떤 패킷인지 알 수 없음

그래서 이를 해결하기 위해 포트가 필요

IP->목적지 찾기
포트 -> 목적지안에서 어플리케이션 구분하기위해서

DNS

IP는 기억하기 어려움
IP는 변경도 가능함
도메인명을 IP로 변경함

IP 주소 변경 시의 동작
도메인의 IP 주소가 변경되더라도 DNS 서버는 새로운 IP 주소를 갱신하여 사용자가 최신 정보를 받을 수 있도록 합니다. 갱신은 도메인 소유자가 DNS 서버의 레코드를 업데이트함으로써 이루어집니다.

이를 통해서 해결함.

profile
개발취준생

0개의 댓글