[HTTP] 1. 인터넷 네트워크

2024. 10. 13. 13:08·BE/HTTP

인터넷 통신

  • 인터넷 세계에서 컴퓨터 둘이 물리적으로 붙어있다면 케이블로 바로 연결해서 데이터를 받으면 됨
  • 하지만 현재 우리 세상의 인터넷은 굉장히 복잡하고 서로의 컴퓨터에게 데이터를 전송하기 위해서는 수 많은 중간 서버들을 거쳐야 함

 

IP (Internet Protocol)

  • 그래서 등장한 것이 인터넷 상에서의 주소 개념인 IP
  • IP의 역할
    • 지정한 IP 주소에 데이터 전달
    • 패킷이라는 통신 단위로 데이터 전달
  • 데이터를 보낼 때 출발지 ip와 목적지 ip를 헤더에 적어서 같이 보내줌
  • 인터넷은 다 같은 규약을 따르고 있기 때문에 인터넷 상의 노드들이 서로 ip주소를 물어가면서 최종적인 목적지에 도착하여 데이터를 전송

    BUT
    • IP 프로토콜의 한계가 존재
      • 비연결성
        • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송
      • 비신뢰성
        • 중간에 패킷이 사라지면?
        • 패킷이 순서대로 안오면?
      • 프로그램 구분
        • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

TCP, UDP

  • 인터넷 프로토콜 스택의 4계층
    • 애플리케이션 계층 (HTTP, FTP)
    • 전송 계층 (TCP, UDP)
    • 인터넷 계층 (IP)
    • 네트워크 인터페이스 계층
  • 전체적인 프로세스
    • 프로그램이 메세지 생성
    • SOCKET 라이브러리를 통해 전달
    • TCP 정보 생성 (PORT 정보 + 전송 제어, 순서, 검증 정보 등)
    • IP 패킷 생성, TCP 데이터 포함
    • 마지막으로 인터넷으로 나갈 때는 Ethernet frame까지 포함되어서 나감
  • TCP 특징
    • Transmission Control Protocol
    • 연결지향 -> 3 way handshake (가상 연결)
      • SYN, SYN+ACK, ACK 3번 주고 받아서 연결되고 난 후 데이터를 전송
        • 하지만, 개념적으로만 연결된 것이지 물리적으로 연결된 것은 아님
    • 데이터 전달 보증
      • 데이터를 전송하면 잘 받았다는 메세지를 다시 보내줌
    • 순서 보장
      • 순서가 뒤바뀐 경우 다시 보내달라는 요청을 함

 

  • UDP 특징
    • User Datagram Protocol

    • 연결지향 x
    • 데이터 전달 보증 x
    • 순서 보장 x
    • BUT, 단순하고 빠름

 

PORT

  • 하나의 IP에서 여러 개의 애플리케이션(프로세스)를 구분하기 위해 사용
  • TCP Layer에서 사용

  • 0 ~ 65535: 할당 가능
  • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음

 

DNS

  • IP는 기억하기 어렵고 변경될 수 있음
  • DNS (Domain Name System)
    • DNS서버에 IP를 등록해 둠으로써
      • 기억하기 어려운 문제와
      • 변경될 수 있는 문제 둘 다 해결 가능

 


김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 보고 작성한 내용입니다.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

'BE > HTTP' 카테고리의 다른 글

[HTTP] 4. HTTP 메서드  (0) 2024.10.13
[HTTP] 3. HTTP 기본  (1) 2024.10.13
[HTTP] 2. URI와 웹 브라우저 요청 흐름  (0) 2024.10.13
'BE/HTTP' 카테고리의 다른 글
  • [HTTP] 4. HTTP 메서드
  • [HTTP] 3. HTTP 기본
  • [HTTP] 2. URI와 웹 브라우저 요청 흐름
m5n
m5n
  • m5n
    m5n
    m5n
  • 전체
    오늘
    어제
    • 분류 전체보기 (16)
      • 기록 (0)
      • Language (6)
        • Java (6)
        • Python (0)
      • Spring (0)
      • Aws (0)
      • Git (0)
      • FE (2)
        • JavaScript (2)
      • BE (4)
        • HTTP (4)
      • PS (3)
        • 백준 (2)
        • 프로그래머스 (0)
        • Sql (1)
      • 기술서적 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
m5n
[HTTP] 1. 인터넷 네트워크
상단으로

티스토리툴바