본문 바로가기
Learning-log/Spring & JPA

(모든 개발자를 위한 HTTP 웹 기본 지식) 1-(3) TCP, UDP, (4) PORT (5) DNS

by why제곱 2023. 4. 16.

- TCP, UDP

  • IP에서 생긴 패킷이 꼬이는 문제를 TCP, UDP로 해결 가능
  • 프로토콜 계층
    • 프로그램이 메시지 생성
    • 소켓 라이브러리를 통해 전달
    • TCP 정보 생성, 메시지 데이터 포함
    • IP 패킷 생성, TCP 데이터 포함
  • IP패킷 정보(출발지, 목적지 IP) -> IP패킷 안에 TCP 정보 담김(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등) -> IP로 해결 안된 순서 제어 문제 해결 가능
  • TCP 특징
    • 전송 제어 프로토콜
    • 연결지향 TCP3 way handshake(가상 연결)
    • 데이터 전달 보증
    • 순서 보장
    • 신뢰할 수 있는 프로토콜
    • 현재는 대부분 tcp사용
  • 3way handshake
    • 클라이언트가 syn 전달
    • 서버가 syn + ack 전달
    • 클라이언트가 ack 전달
    • syn : 전송 요청
    • ack : 요청 수락
    • ack와 함께 데이터 전송 가능
  • TCP로 연결이 됐다고 표현하는건 진짜 연결된 건(물리적) 아님. 개념적으로만 연결 된 것. 나를 위한 전용 랜선이 보장된 건 아님
  • 데이터 전달 보증
    • 데이터를 전송하면 데이터 전송을 잘받았다는 응답이 옴
  • 순서 보장
    • 1. 패킷 1, 패킷2, 패킷3 순서로 전송
    • 패킷 1, 3, 2순서로 도착
    • 패킷 2부터 다시 보내라는 응답
  • UDP특징
    • TCP와 같은 계층 
    • 사용자 데이터 그램 프로토콜
    • 데이터 전ㄷ라 보증, 순서, 연결지향X
    • 데이터 전달 및 순서 보장 안되지만 단순, 빠름
    • IP와 거의 유사한데 포트라는게 추가됨
    • 애플리케이션에 추가 작업 필요

- PORT

  • 한번에 둘 이상 연결해야 하면?
    • 패킷들이 날아올텐데 어느 프로그램에 필요한 패킷인지 어떻게 알 것인가의 문제!
      • TCP 정보에 PORT로 구분
      • 같은 IP 내에서 프로세스를 구분하는 역할 = PORT
      • IP가 아파트라면 PORT는 호수!

 

- DNS

  • IP는 변경될 수 있고 기억하기 어려움
  • 그래서 도메인 네임시스템(DNS) 사용
  • DNS서버에 도메인 등록 -> IP주소 기억 -> 도메인 명이 들어오면 응답을 IP주소로 줌