[인강노트-웹지식] 1. 인터넷 네트워크

봄도둑·2022년 4월 28일
1

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 내용을 정리한 노트입니다. 블로그에 있는 자료를 사용하실 때에는 꼭 김영한님 강의 링크를 남겨주세요!

1. 패킷

1-1. 패킷의 전송 과정

(패킷의 전달 과정, 이미지 출처 : 강의 교재 자료)

  • 클라이언트와 서버 사이의 수 많은 노드를 거쳐 클라이언트의 요청이 서버로 넘어감
  • 이러한 수많은 노드들을 거치는 과정을 이해하기 위해서는 ip 프로토콜에 대한 이해 필요

IP(인터넷 프로토콜)

  • 지정한 IP 주소에 데이터 전달 → 이 때 패킷이라는 통신 단위로 전달

1-2. 패킷 개요

패킷

  • 출발지 IP(위의 예시 이미지에서 클라이언트)
  • 목적지 IP(위의 예시 이미지에서 서버)
  • 출발지와 목적지 IP가 있는 것은 우리가 편지 쓸 때와 같다고 생각
  • 이 패킷이 목적지 IP에 갈 수 있는 노드들을 에게 던져지고 이를 거쳐서 목적지에 도착, 답신이 필요하다면 다시 처음 보낸 녀석을 목적지로 패킷이 던져짐.


(서버 → 클라이언트 패킷 전달 과정 : 강의 교재 자료)

  • 그런데 IP 주소만을 이용한 패킷 전송에는 다음과 같은 문제가 따름

    • 목적지 IP가 서비스 불능인 IP일 경우 → 패킷이 죽은 서버로 간 후 다시는 볼 수 없음(전달은 되지만 아무것도 안 일어남)

    • 패킷 소실 : 패킷이 노드들 사이에서 전송되던 중 노드가 갑자기 죽는 경우 발생 → 패킷이 날아감

    • 패킷 전달 순서 문제 : 출발지에서는 1, 2번의 순서로 패킷을 전송했으나 노드들을 통해 전송되고 나서 목적지에는 2, 1번의 순서로 도착하는 경우 발생

      ⇒ IP 프로토콜은 이러한 문제를 해결해주지 못함 → 이걸 해결 해주는 것이 바로 TCP 프로토콜

2. TCP와 UDP

2-1. 인터넷 프로토콜 4계층

인터넷 프로토콜의 4계층

  • 애플리케이션 - HTTP, FTP
  • 전송계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 - 인터페이스 계층
  • 위 사진에서 웹브라우저, 네트워크 게임, 채팅 프로그램은 어플리케이션 계층, 그 아래 TCP와 UDP(전송 계층)이 있고 그 아래 인터넷 계층인 IP가 있음. 대표적인 네트워크 인터페이스 계층으로는 LAN에 관련된 장비들이 있음.

2-2. TCP 개요

TCP 전송 과정

  • 애플리케이션 계층에서 전송 데이터 생성 → 전송 데이터를 TCP 정보로 감쌈 → 그 후 IP 정보로 한 번 더 감싸서 IP 패킷 생성 → 네트워크 인터페이스 (LAN 카드 등)을 통해 최종적으로 나갈 때 이더넷 프레임으로 한 번 더 감싸짐(이더넷 프레임은 물리적 주소 정도로 생각하자. 우리가 다룰 건 네트워크 수준이기 때문에 이더넷 프레임은 깊게 다루진 않음. 공부 해두면 좋음)

TCP

  • 전송 제어 프로토콜

  • 포함 정보 : 출발지 port, 목적지 port, 전송 제어, 순서, 검증 정보 등...

  • 연결 지향(출발지와 목적지의 연결 상태 여부 체크) → 3 way handshake

    • syn 메시지 전송 → 받는 쪽에서 syn + ack 메시지 응답 → syn + ack 응답을 받는 쪽에서 다시 ack 전송
    • 클라이언트와 서버간 서로 살아 있다는 것을 앎(서로가 신뢰할 수 있음)
    • 최적화를 위해 3번째 ack가 나갈 때 같이 데이터를 전송하는 경우도 있음
    • 단, 3 way handshake로 연결이 되었다고 해서 물리적으로 연결된 것이 아님 → 개념적으로 연결만 된 것(논리적 연결이 되었다고 보는데 이는 서버와 클라이언트가 서로 살아있구나 정도만 알고 그 사이에 존재하는 노드 서버의 상태는 모르는 상태를 말함)
  • 데이터 전달 보증

  • 순서 보장

    • 패킷이 1, 2, 3 순서로 나가고 받는 쪽에서 1, 3, 2로 받음 → TCP에는 순서에 대한 정보가 있기 때문에 보낸 쪽에게 다시 틀린 순서부터 보내라고 요청을 전송
  • 신뢰할 수 있는 프로토콜로 현재 대부분 TCP 사용

2-3. UDP 개요

UDP

  • 사용자 데이터그램 프로토콜
  • TCP와 같은 계층
  • 기능은 거의 없음 → IP와 거의 똑같지만, UDP에는 port 정보가 추가 되어 있음
  • 단순하고 빠름
  • TCP는 이미 구축이 다 되어 있기 때문에 사용자가 추가 최적화를 할 수 없음 → UDP를 사용해 애플리케이션 레벨에서 최적화를 할 수 있음
  • 최근에 UDP가 뜨고 있는데 바로 그 이유가 자유로운 최적화

2-4. Port 개요

port

  • 하나의 IP가 여러 서버와 통신 ⇒ 이걸 구분할 필요가 있음
    • ex) 내 컴퓨터의 IP는 하나지만, 롤도 하고, 로아도 하고, 레오룬도 하고, poe도 함 → 여러 게임 서버와 통신해야 하는데 하나의 IP로는 통신에 대해 구분할 수 없음
  • 하나의 IP에 여러 패킷이 오는데, 각각의 애플리케이션이 받을 수 있는 창구라고 생각!
  • TCP에 출발지, 도착지의 port 정보가 있음
  • 더 쉬운 비유를 하면 IP는 아파트, port는 동호수를 의미
  • 0 ~1023은 잘 알려진 포트로 안 쓰는 게 좋음

2-5. DNS

DNS

  • 도메인 네임 시스템
  • IP는 기억하기 어려울 뿐만 아니라 변경, 변조될 여지가 있음
  • DNS는 중간에 전화번호부 같은 서버를 둠
  • 도메인명으로 DNS 서버에 접근 → DNS 서버는 도메인 이름에 해당하는 IP를 응답함 → 받은 IP 주소로 패킷을 만들어서 서버에 쏴줌.

블로그에 있는 자료를 사용하실 때에는 꼭 김영한님 강의 링크를 남겨주세요!
(강의 링크 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard)

profile
배워서 내일을 위해 쓰자

1개의 댓글

comment-user-thumbnail
2023년 3월 9일

글이 강의 자료를 그대로 가져온 것 같아 보여서 질문 드립니다.
내용을 자신만의 방식으로 재해석을 하여 기고하는 것은 괜찮다고 알고있습니다. 강의자료에서 일부 발췌를 하는 것은 저자에게 허락을 받으면 가능하다고 알지만 위 내용은 전체를 다 발췌하는 것 같아보입니다. 이는 저작권상에 문제가 되는 것으로 알고 있는데요. 혹시 저자분께는 승인 받으신 걸까요?

답글 달기