ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP] IP, TCP, UDP, DNS
    HTTP 2023. 1. 20. 21:53

    인터넷 통신

    인터넷에서 서버와 클라이언트는 어떻게 서로 통신을 할까?

    인터넷망은 수많은 노드들이 얽혀있다.

    컴퓨터 둘은 ip(인터넷 프로토콜)이라는 정보를 가지고 이런 노드들을 타고타고 이동해서 만나게된다.

     

    IP(인터넷 프로토콜)

    복잡한 인터넷망에서 메세지를 보내기 위해서는 ip가 있어야한다.

    IP는 패킷이라는 통신단위로 지정한 주소에 데이터를 전달한다.

    ip패킷에는 출발지ip와 목적지 ip와 같은 정보들이 있다

    클라이언트, 서버는 전송데이터에 출발지,목적지 ip정보를 담은 ip 패킷을 씌어서 메세지를 보낸다.

     

    ip프로토콜의 한계

    • 비연결성 : 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷을 전송한다.

              - 대상 서버가 패킷을 받을 수 있는 상태인지 모르고 전송하기때문에 일단 던지고 받았는지 안받았는지도 알수가없다.

    • 비신뢰성 : 중간에 노드들을 지나면서 패킷이 사라져도 알수없고, 패킷이 사용자가 원한 순서대로 서버에 도착하지 않을 수도있다.

              - 프로그램구분 못함: 같은 ip를 사용하는 서버에서 통신하는 애플리케이션들을 구분하지도 못한다.

     

     

    TCP

    ip프로토콜의 한계를 해결하기 위해 등장한것이 TCP이며, 신뢰할 수 있는 프로토콜이다.

    거의 현재 네트워크상 모든 통신은 TCP로 이루어진다고 해도 과언이아니다.

    TCP프로토콜은 연결지향적이고 데이터의 전달을 보증하며 순서가 보장된다.

     

    TCP세그먼트에는 출발지와 목적지 PORT와 전송제어,순서,검증 정보등의 데이터가 있다.

    TCP 3 way handshake

    ip프로토콜의 비연결성 문제를 해결해주는 방법이다. 총 3차례의 응답과정을 통해 서버와 클라이언트의 통신가능 여부를 체크한다.

    이 과정은 가상연결이다. 즉 논리적으로 연결되었음을 나타내는것이다. 최근에는 3. ACK단계에서 전송 데이터를 같이 넘긴다고한다.

     

    TCP의 특징

    • 데이터 전달 보증 - 서버에서 클라이언트가 보낸 데이터를 전송받았는지 여부를 알수있다.
    • 순서보장 - 데이터 순서가 바뀌었을 경우 서버에서 이를 확인하고 재요청한다.
    • 전송속도 느림 - tcp 3ways단계를 거치면서 속도가 느려질수 있다. 
    • 이미 기능이 꽉차 있어서 사용자가 뭔가를 최적화하거나 추가하고싶어도 할 수가없음

     

    UDP (사용자 데이터그램 프로토콜)

    UDP : ip + port + 체크섬(데이터가 손상되었는지 확인) 

    데이터 전달 및 순서가 보장되지 않는다.  연결지향적이지도 않다.

    기능이 거의 없어, 단순하고 빠르다. 빈 도화지같아서 사용자가 애플리케이션에서 추가작업이 가능하다.

     

    PORT

    만약 게임, 화상통화, 웹브라우저 요청을 실행한다고 가정해보자, 모두 같은 ip를 갖고 실행되고있다. 이렇다면 서버에서 응답이 왔을때 어디에서 보여주어야할까? 이를 해결하는 개념이 PORT이다.

     

    PORT는 하나의 ip에서 여러개의 패킷이 올때 구분하는역할을한다,같은 ip안에서 동작하는 애플리케이션을 구분하는 역할

    ip : 목적지 서버를 찾는거라면, 포트 : 그서버안에서 어떤게 돌아가는지 구분 (ip가 아파트면 포트는 몇동몇호이다.)

     

     

    DNS (도메인 네임 시스템)

    ip는 기억하기가 어렵고, 신규 ip로 변경될수도있다.

    DNS는 중간에 전화번호부같은 서버를 제공해줌

    DNS에 도메인을 등록할수있다. 도메인명으로 DNS서버에 IP를 요구하고 DNS서버에서 IP주소를 응답해준다 

     

     

     

     

    https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

     

    모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

    실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

    www.inflearn.com

     

    댓글

lee-ding