웹의 동작 방식 & TCP와 UDP

seul_velog·2022년 2월 23일
1

WEB

목록 보기
4/4
post-custom-banner

1. 웹의 동작방식

✍️ 웹이 동작하는 방식의 큰 흐름에 대해 알아보자.

  1. 사용자가 URL 주소를 입력
  2. 브라우저는 DNS서버에서 해당 도네임 검색
  3. HTTP프로토콜을 사용, HTTP 요청 메세지 생성
  4. TCP/IP 연결을 통해 HTTP요청이 서버로 전송
  5. 서버는 HTTP프로토콜을 사용, HTTP 응답 메세지 생성
  6. TCP/IP 연결을 통해 요청한 컴퓨터로 전송
  7. 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환, 웹 브라우저에 의해 출력 → 사용자가 보게 됨

📌 상세과정 참고

①② 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함.

③ 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색함.

④ DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함.

⑤⑥ 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성함.

이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨.

⑦ 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨.

⑧ 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색함.

⑨⑩ 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성함.

이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송됨.

⑪ 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환됨.

⑫ 변환된 웹 페이지 데이터는 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨.


📌 용어정리(1)

✍️ DNS

도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.naver.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환한다.


✍️ HTTP

HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다.





2. Transport Layer (전송계층)

End Point 간 신뢰성 있는 데이터 전송을 담당하는 계층이다.

  • 신뢰성 : 데이터를 순차적이고 안정적으로 전달
  • 전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달


Transport Layer가 없다면? (전송계층의 중요성)

  1. 데이터 순차 전송이 원할하지 못할 것
    → 송신자가 의도하지 않은 정보전달이 이루어질 수 있다.
  2. Flow (흐름문제)
    → 송수신자 간 데이터 처리 속도차이로 인해서 컴퓨터의 한정된 데이터량이 초과되어 정보가 누락될 수도 있다.
  3. Congestion (혼잡문제)
    → 네트워크의 데이터 처리속도 때문에 송신자 쪽에서 데이터를 보내더라도 수신자가 데이터를 받을 수 없는 상황이 생길 수도 있다.

▼ 이와같은 문제의 결과 (데이터손실)

Hello Nice to meet you !!

Hell        to     you 

✍️ 예시의 데이터 손실과같이 이 부분은 굉장히 중요한 문제이므로 사람들이 고민을 하게 되었고, 그래서 나온 개념이 TCP 이다.🤔





3. TCP

TCP(Transmission Control Protocol)
: 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

  • 연결형 서비스로 가상 회선 방식을 제공
  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제
  • 흐름(Flow) 제어 및 혼잡(Congestion) 제어
  • 높은 신뢰성을 보장
  • 데이터의 순차전송 보장
  • 파일전송에 사용

TCP는 연결형 서비스로 신뢰성을 보장한다. 따라서 이메일이나 채팅 애플리케이션 등 신뢰성있는 전송이 중요할 때에 사용한다.


TCP 문제점

  • 신뢰성은 보장하지만 매번 connection을 연결해서 시간 손실 발생, 패킷을 조금만 손실해도 재전송이 발생된다.
    → 예를들어 원본사진과 조금 수정된 사진이 있을때 티가 거의 나지 않더라도 다시 재전송을 하게되는데, 서비스에 따라서 불합리한 손실을 발생시킬 수 있게 된다.




4. UDP

UDP(User Datagram Protocol)
: 데이터를 데이터그램 단위로 처리하는 프로토콜

  • TCP와 달리 비연결형 프로토콜. 연결을 설정, 해제하는 과정이 존재하지 않음
  • 신뢰성이 낮지만 TCP보다 속도가 일반적으로 빠르다.
  • 흐름제어X 혼잡제어X 순차전송X
  • TCP처럼 커넥션을 연결하지 않고 커넥션을 끊은 상태로 연결을 함(다방향으로 함) 따라서 각각의 패킷은 독립적이며 각각 독립적인 경로로 전송
  • 실시간 서비스나 영상 스트리밍(사진의 연속)에 사용

UDP는 비연결형 서비스이므로 TCP보다 빠르고 네트워크 부하가 적지만 신뢰성은 낮다. 신뢰성보다는 연속성, 성능이 중요한 실시간 서비스 등에 사용한다.



TCP와 UDP의 차이점 표 & 정리

데이터를 전송하는 데 사용되는 두 가지 프로토콜인 TCP와 UDP가 있다. TCP는 전송 제어 프로토콜을 나타내는데, 훨씬 더 많은 오류 검사 기능과 안정성을 허용하기 때문에 둘 중 더 일반적이다. UDP 또는 사용자 데이터그램 프로토콜은 광범위한 오류 검사가 부족하지만 결과적으로 TCP보다 훨씬 빠른 것으로 간주된다.


📌 용어 정리(2)

✍️ 포트

IP를 통해 원하는 데이터가 목적지(노트북,핸드폰 등)까지 왔다면, 그안에서 어떤 프로그램(어플리케이션)으로 가야할지 알려준다. 만약 인터넷창이 여러개일때 1번 인터넷창에서 검색한 내용이 2번 인터넷창에서 켜질수도 있기때문에 프로세스 구분을 위해서 꼭 필요한 것이 포트번호이다.


✍️ 패킷(Packet)

인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 한다.


✍️ 흐름제어(Flow Control), 혼잡제어(Congestion Control)

흐름제어: 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다. (송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문)
혼잡제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것이다. 만약 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.


✍️ 데이터그램

독립적인 관계를 지니는 패킷



✍️ TCP와 UDP를 알아야 하는 이유

TCP와 UDP 각각의 특성을 파악하고 상황에 따른 적절한 프로토콜을 사용한다면 성능의 개선까지 이어질 수 있기 때문이다.😀




reference
TCP-웹의 동작 원리
TCP&UDP, Transport Layer
TCP&UDP

profile
기억보단 기록을 ✨
post-custom-banner

0개의 댓글