본문 바로가기
공부

[모든 개발자를 위한 HTTP 웹 기본 지식] 세션 1,2 - ip, tcp/udp, port, dns, uri/url/urn

by thegreatjy 2024. 1. 24.
728x90

모든 개발자를 위한 HTTP 웹 기본 지식
를 보고 노트 정리한 내용입니다.

IP

  • internet protocol

  • 목적지 ip 주소에 IP 패킷 전달
  • IP 패킷 : 데이터를 전송하는 단위. 데이터 덩어리

IP packet

  • 출발지 ip(나의 ip), 목적지 ip, 메세지 의 정보를 가진 데이터 덩어리
    • 패킷이라는 통신 단위로 데이터 전달
  • IP 패킷은 인터넷에 전송되어 목적지 ip 주소에 도착하게 된다.

IP 프로토콜의 한계

  • 비연결성
    • 대상 서버(목적지 ip)가 서비스 가능 상태인지 알 수 없다.
    • 대상 서버가 서비스 불능 상태이어도 패킷을 전달한다.
  • 비신뢰성
    • 순서X : 패킷을 전송한 순서대로 대상 서버에 도착하지 않을 수 있다.
    • 소실 : 중간에 패킷이 소실될 가능성이 있다.
  • 프로그램 구분
    • 목적지에 패킷이 도착하더라도 어느 프로그램(프로세스)에서 사용하는 데이터인지 알 수 없다.

TCP, UDP

인터넷 프로토콜 스택 4계층

네트워크 인터페이스 계층에서는 LAN 카드와 같은 물리적인 통신 사용

프로토콜 계층에 따른 통신 흐름

  1. 실행 중인 프로세스(애플리케이션)에서 채팅 메세지를 담은 데이터 생성
  2. 채팅 서비스를 위한 소켓 라이브러리에 전달된다.
  3. OS단으로 넘어와서 tcp 정보를 생성한다. 즉, 출발지 포트, 목적지 포트, 순서, 검증 정보, 전송 제어, 채팅 메세지를 포함한 tcp 세그먼트를 생성한다.
  4. ip 패킷을 생성한다. 즉, tcp 세그먼트에 출발지 ip주소, 목적지 ip주소를 추가하여 ip 패킷을 생성한다.

ip 패킷

TCP 특징

  • 연결지향
    • 3-way handshake
      • 가상 연결
      • 메세지를 보내기 전, 서버 상태를 확인한다.
  • 전달 보증
  • 순서 보장

⇒ 신뢰할 수 있는 프로토콜

3-way handshake

  1. 클라이언트에서 서버로 SYN(접속 요청)
  2. 서버에서 SYN(접속 요청) + ACK(요청 수락)
  3. 클라이언트가 서버로 ACK(요청 수락) 및 논리적 연결. 이 때부터 데이터 전송이 가능하다.
  4. 클라이언트가 서버로 데이터 요청, 전송
  • tcp 연결
    • 물리적 연결 X. 논리적 연결 O
    • 클라이언트와 서버 사이의 수많은 노드들의 정보를 알지 못함

전달 보증

순서 보장

  1. 클라이언트 → 서버. 패킷 1,2,3 순서대로 전송
  2. 서버는 패킷 1,3,2 순서로 전달받음
  3. 서버는 잘못받은 2부터 다시 요청할 것을 요구함
    1. 잘못된 순서로 받았다는 사실은 tcp 세그먼트 안의 순서, 검증 정보를 통해 파악한다.

UDP 특징

  • 단순
  • 빠름
  • IP 패킷 + 포트 정보 + checksum (데이터 오류 여부 파악)
    • ip 패킷 : 출발, 도착 ip 정보
    • 포트 정보 : ip 하나에서 여러 패킷이 수신될 때, 어떤 어플리케이션에서 사용하는 패킷인지 구분

port

  • 같은 ip 안(호스트 내부)에서 통신 중인 프로세스(application)을 구분하기 위하여 포트 사용
  • ip 주소 = 아파트, 포트 = 동 호수

잘 사용되는 포트 번호

  • ssh (22) : 원격접속. 보안 채널을 통해 데이터를 암호화된 방식으로 전달.
  • telnet (23) : 원격접속. 데이터를 일반 텍스트로 전달.

DNS

Domain Name Server

  • ip 주소는 변경될 수 있다.
  • ip 주소는 암기하기 어렵다.

⇒ 도메인 이름을 사용하여 ip 주소에 접속하자.

DNS 사용 흐름

  1. 클라이언트가 도메인명을 입력
  2. dns 서버가 도메인에 맞는 ip 주소를 찾아 클라이언트에게 응답한다.
  3. 클라이언트는 ip주소로 서버에 접속(통신)한다.

→ ip 주소가 바뀌어도 서버에 접속할 수 있다.

정리

  • ip (internet protocol)
    • 비연결성(목적지 서버의 상태를 알 수 없다.)/패킷 소실/순서보장x
  • tcp
    • 연결으로 인한 신뢰성.(3way handshake)
    • 전달 보증
    • 순서 보장
  • udp
    • ip 패킷 + 포트 + 체크섬(오류확인)
  • port
    • 같은 ip 에서 여러 프로그램이 통신 중일 경우, 패킷을 구분하여 전달하기 위함
    • 같은 ip 안에서 동작하는 여러 프로세스를 구분하여 데이터를 전달하기 위함
  • dns
    • ip주소는 변동되기 때문에 암기하기 쉬운 도메인 이름으로 ip주소에 접속한다.

URI, URL, URN

  • URI
    • Uniform Resource Identifier
    • 리소스를 식별
    • 자원 위치를 식별
  • URL
    • Resource Locator
    • 리소스가 있는 위치 지정
  • URN
    • Resource Name
    • 리소스 이름 부여

⇒ 위치는 변할 수 있지만, 리소스의 이름은 변하지 않음.

  • Uniform
    • 리소스를 식별하는 통일된 방식
  • Resource
    • 자원
    • URI로 식별할 수 있는 모든 것을 리소스라고 한다.
  • Identifier
    • 다른 항목과 구분하는 데 필요한 정보

[참고] https://www.elancer.co.kr/blog/view?seq=74

URI, URL, URN 구별하기

(예) https://www.elancer.co.kr

구분 내용 설명
URI www.elancer.co.kr 식별자. 웹 사이트 ip 주소
URL https://www.elancer.co.kr 식별자+위치. 웹 사이트 ip 주소 + 프로토콜

ip주소 + 프로토콜(포트)를 알아야지 통신 가능

(예) https://www.elancer.co.kr/blog/view?seq=74

구분 내용 설명
URI www.elancer.co.kr/blog/view?seq=74 식별자. 웹 사이트 ip 주소
URL https://www.elancer.co.kr/blog/view?seq=74 식별자+위치. 웹 사이트 ip 주소 + 프로토콜
URN blog/view?seq=74 접근 서버 경로에 대한 상세 정보. path

URL 문법

scheme

  • 주로 프로토콜을 사용한다.
  • 프로토콜
    • 어떤 방식으로 자원에 접근(통신)할 것인가에 대한 약속 규칙

host

도메인명 혹은 ip 주소

port

접속 포트. 프로토콜에 의해 생략 가능.

path

리소스 경로. 계층형 구조로 되어 있다.

query

  • 쿼리 스트링, 쿼리 파라미터로 불린다.
  • key=value 형태
  • ?로 시작하고, &를 통해 key, value를 추가한다.
  • 웹 서버에 문자 형태로 데이터를 제공한다.

웹 브라우저 요청 흐름

!! 여기 추가할 것 !!

728x90

'공부' 카테고리의 다른 글

코테 준비  (0) 2024.10.01
[AWS] AWSome Day 온라인 컨퍼런스 후기, 정리  (1) 2023.11.18