인터넷 통신

  • 클라이언트와 버서간 다양한 노드 서버들을 거쳐서 통신

IP(인터넷 프로토콜)

  • 클라이언트와 서버간 지정한 IP 주소로 데이터를 전달한다.
  • 패킷이라는 통신단위로 데이터 전달
  • 클라이언트 -> 서버, 서버 -> 클라이언트 간의 노드들은 경로가 달라질 수 있음
  • 중간에 서버가 끊길 경우 제대로 도착하지 않음
  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 여러개의 패킷이 순서대로 도착하지 않을 수 있음
  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우 구분 불가

TCP, UDP

TCP

  • IP 계층의 보완
  • 출발지 포트와 도착지 포트의 정보를 가지고 있음
  • TCP 3 way handshake를 이용해 서버 - 클라이언트 간 연결 후 데이터를 전송함

클라이언트 - SYN - > 서버

클라이언트 <- SYN + ACK - 서버

클라이언트 - ACK -> 서버

이 과정을 거친 후 데이터 전송 (최근에는 마지막 ACK와 함께 데이터 전송 가능)

  • 데이터 전송 후 데이터를 받았다고 신호를 보내 데이터 전달 보증을 해줌
  • 패킷의 순서 정보를 가지고 있어 서버측에서 패킷이 순서대로 오지 않을 경우 재전송 요청
  • 다양한 검증이 있기 때문에 느림
  • 커스텀 거의 불가

UDP

  • 기능이 거의 없는 하얀 도화지 같은..
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 같고, PORT정보와 체크썸 정보가 추가되어있다.
  • 사용자가 커스텀이 가능하다
  • HTTP 3에서는 UDP를 사용하는것이 뜨고 있다.

PORT

  • 하나의 IP에 여러개의 응답이 들어온다면 -> PORT를 이용해 구분
  • TCP 패킷에 출발지와 도착지의 PORT 정보가 있음
  • PORT정보를 이용하여 클라이언트가 다양한 어플리케이션을 한번에 사용가능하다

DNS

  • 기억하기 어렵고, 변경가능성이 큰 IP 주소를 대신하여 쓰는 이름
  • www.naver.com 과 같은 도메인
  • 클라이언트에서 서버에 요청 시 DNS 서버에서 도메인 명으로 IP주소를 찾아서 응답받고, 그 IP주소를 이용하여 해당 서버를 찾음