코딩한걸음
728x90
반응형
💡
이 포스팅은 window, vscode 기준으로 작성되었습니다. 안보일 경우 우측하단의 버튼을 눌러 라이트모드로 바꿔주세요!

웹 브라우저의 흐름

  1. DNS 조회

    Domain Name System IP 주소 및 기타 데이터를 저장하고 이름별로 쿼리할 수 있게 해주는 계층형 분산 데이터 베이스

  1. HTTP 요청 메세지 작성 서버가 특정 동작을 취하게끔 만들기 위해 클라이언트에서 전송하는 메세지
  1. Socket Library 통해서 전달 클라이언트 - 서버 모델에서 서버는 소켓을 바인딩하고, 클라이언트는 소켓을 생성하여 서버와 연결함
  1. TCP/IP 작성되고 이 안에 HTTP 메시지가 포함

프로토콜 계층

  • TCP/IP는 OSI 7 Layer를 4개로 단순화하여 구현
  • TCP/IP는 3,4 계층을 중심으로 한 통신 프로토콜의 계층 집합이다
  • 각 항목마다 종류가 다향하지만 몇개만 골라서 설명함

응용 계층 (Application Layer)

  • 사용자가 직접 상호작용하는 소프트웨어
  • HTTP (Hyper Text Transfer Protocol)
    • www 상에서 정보를 주고 받을 수 있는 프로토콜
    • 주로 HTML 문서를 주고 받는데 쓰임
    • TCP와 UDP를 사용하며, 80번 포트를 사용
    • 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜
    • HTTP를 통해 전달되는 자료는 http: 로 시작하는 URL로 조회 할 수 있음
  • DNS (Domain Name System)
    • 호스트에 대한 정보를 분산시켜서 관리하는 데이터베이스
    • IP주소와 Host이름이 서로 연결되어 구조화된 역 트리구조를 같는 계층적이고, 분산된, 클라이언트 - 서버 구조의 데이터베이스 시스템

전송 계층 (Transport Layer)

  • TCP (Transmission Control Protocol)
    • 전송제어프로토콜, 네트워크의 정보전달을 통제하는 프로토콜
    • TCP는 IP위에서 동작하는 프로토콜로 흔히 TCP/IP로 표기함
    • 패킷의 교환을 근간으로 하는 인터넷 프로토콜(IP)을 기반으로 작동함
    • 데이터의 전달을 보증하고 보낸 순서대로 받게 해줌
    • 연결지향 TCP 3 way handshake 를 통해 연결을 먼저 확인함
  • UDP (User Datagram Protocol)
    • 신뢰성이 낮은 데이터그램 프로토콜로써 완전성을 보증하지 않으나, 응용이나 네트워크 환경에서 가상회선을 굳이 확립할 필요가 없어서 유연하고 효율적인 데이터 전송에 사용되는 프로토콜
  • RTP (Real-time Transport Protocol)
    • 신뢰성은 없으나 빠르게 데이터를 전달할 수 있는 UDP 수송 프로토콜 위에서 실행되며 주로 실시간 서비스를 제공함

네트워크 계층(Network Layer)

  • IP (Internet Protocol)
    • 송신 호스트와 수신 호스트과 패킷 교환 네트워크에서 정보를 주고받는데 사용하는 정보 위주의 규약
    • OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 담당
    • 비신뢰성, 비연결성이 특징
    • 각 패킷은 출발지, 목적지 IP주소와 데이터를 포함하며, 라우터를 통해 전송된다

    한계

    • 받을 대상이 없을 수도 있다.
    • 중간에 패킷이 손실되거나 순서대로 오지 않을 수 있다.
    • 같은 IP를 사용하는 어플리케이션이 여러개라면 문제가 생긴다.

데이터 링크 계층 (Data Link Layer)

  • Ethernet
    • 비연결성(connectionless)모드, 전송속도 10Mbps 이상
    • 모든 노드가 동일한 전송매체를 공유함(Shared Media)

추가 용어 설명

TCP 3 way handshake

  • TCP 연결을 설정할 때 사용하는 과정
    1. 클라이언트는 서버에게 SYN 패킷을 보낸다. 이 패킷은 클라이언트의 초기 순서 번호를 가지고 있다.
    1. 서버는 SYN 패킷을 받고, 클라이언트에게 ACK와 SYN 패킷을 보낸다. 이 패킷은 서버의 초기 순서 번호와 클라이언트의 순서 번호+1을 가지고 있다.
    1. 클라이언트는 ACK 패킷을 보내서 서버에게 연결이 수립되었음을 알림. 이때, ACK 패킷에는 클라이언트의 순서 번호+1이 포함된다.
  • 이 과정을 통해 클라이언트 - 서버는 상호간에 순서 번호(sequence number)와 초기 순서 번호(initial sequence number, ISN)를 교환하고, 신뢰성 있는 연결을 설정한다.

  • ACK (Acknowledgment) 패킷 TCP연결에서 데이터 송수신의 확인을 위해 사용하는 패킷. ACK 패킷은 수신한 마지막 바이트의 순서 번호를 포함하며, 이를 통해 송신 측은 전송한 데이터 중에서 손실된 데이터를 확인가능.

  • SYN(Synchronize) 패킷 클라이언트의 초기 순서 번호를 가지고 있으며, 서버에게 클라이언트의 연결 요청을 전달한다. 패킷 내에서 SYN비트가 설정되어 있고, 이를 통해 서버는 클라이언트의 요청을 받아들이고, SYN/ACK 패킷을 보내서 클라이언트와의 연결을 수립한다.

LAN (Local Area Network)

  • 지리적으로 제한된 지역에서 컴퓨터와 기타 네트워크 장비들이 서로 연결된 네트워크. 일반적으로 이더넷 기술을 사용하여 구성되며, 규모에 따라 다양한 디바이스로 구성된다.

Port

  • 컴퓨터 네트워크에서 특정한 응용 프로그램과 통신하기 위한 고유번호
  • 포트는 같은 IP내에서 프로세스 구분을 할 수 있다
  • 송신측과 수신측은 동일한 포트 번호를 사용하여 통신함
  • 포트번호는 0 ~ 65535 까지의 범위에서 지정가능
  • 0 ~ 1023은 잘 알려진 포트로 사용하지 않는 것이 좋다

URI (Uniform Resource Identifier)

  • 인터넷에서 특정한(uniform) 자원(resource)을 식별(identifier)하는 데 사용되는 문자열
  • URI는 URL과 URN으로 구성된다

URL (Uniform Resource Locator)

  • 인터넷에서 특정한 자원의 위치를 식별하는데 사용
  • 프로토콜, 호스트, 포트, 경로 등으로 구성된다

URN (Uniform Resource Name)

  • 인터넷에서 특정한 자원의 이름을 식별하는데 사용
  • 위치 정보가 아닌, 자원의 식별자를 나타냄


Uploaded by N2T

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!