Ethan(기린)
그린기린그림 일기
Ethan(기린)
전체 방문자
오늘
어제
  • 전체보기 (43)
    • Language (4)
      • JavaScript (4)
    • Web (0)
      • HTML (0)
    • Problem Solving (29)
      • BOJ (18)
      • 프로그래머스 (10)
    • Computer Science (3)
      • Algorithm & Data Structure (2)
      • Network (1)
    • Error Log (4)
    • Config (1)
      • Test (1)
    • Thinking (2)
      • Retrospect (2)
      • Essay (0)
    • Book (0)

인기 글

최근 글

최근 댓글

태그

  • boj
  • Lv. 1
  • 프로그래머스
  • 완전탐색
  • 객체 지향 프로그래밍
  • 문자열
  • JavaScript
  • Lv. 2
  • Java의 정석 3rd Edition
  • 알고리즘
  • Java
  • Problem Solving
  • 백준
  • OOP
  • Object-oriented programming

티스토리

hELLO · Designed By 정상우.
Ethan(기린)

그린기린그림 일기

[강의 리뷰] 모든 개발자를 위한 HTTP - 1장. 인터넷과 네트워크
Computer Science/Network

[강의 리뷰] 모든 개발자를 위한 HTTP - 1장. 인터넷과 네트워크

2022. 12. 20. 16:36

이 아티클은 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 공부한 내용을 정리하기 위해 작성되었습니다.

1. 인터넷 통신

인터넷에서 컴퓨터가 통신하는 방법으로는 클라이언트와 서버가 인터넷 망이라는 거대한 연결 고리를 통해서 서로 통신하게 된다. 조금 더 구체적으로 말하자면 인터넷은 여러 지점에 뿌려진 물류 집화장 같은 것으로 서로의 관계가 복잡하게 얽혀있어 복잡하지만 서로 혼선 없이 통신하기 위해 나름의 규칙을 정해 사용하고 있다.


2. IP(Internet Protocol)

  • 서로가 인터넷에서 원할한 통신을 하기 위해 지키기로 약속한 규정된 약속
  • 지정한 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터를 주고 받는다.
  • 주로 호스트의 주소를 지정하는 것과 패킷 분할, 조립을 등의 기능을 수행합니다.

2-1. IP의 한계점

  • 비연결성 : 패킷을 받을 대상이 문제가 발생해도 받아야할 서버가 현재 받을 수 있는 상황인지 알 수 없다.
  • 비신뢰성 (데이터 소실 우려 및 순서 보장 X)
    • 패킷의 유실 문제 : 중간에 패킷을 가로채거나 중간 노드(중계 서버)에 이상이 생기면 패킷이 소실된다.
    • 패킷의 순서 문제 : 데이터 크기를 나눠 전송하면서 중계 서버 경위에 따라 합쳐질 순서가 뒤바뀔 수 있다.
  • 프로그램 구분 : 동일한 IP를 사용하는 서버에서 복수의 애플리케이션에 대해 구분할 방법이 없다.
    ex) 유튜브로 영상을 보면서, 웹 메신저로 채팅을 하는 등 프로그램을 2개 이상 동작시키는 경우를 말한다.

3. PORT

  • 동일한 IP에서 프로그램을 식별하기 위해 사용하는 식별 정보
  • 비유하자면 아파트의 동이 IP 라고 할 때, 호가 PORT가 된다.
    • 수신자가 택배(=패킷)를 받기 위해서는 발신자에게 정확한 아파트의 동, 호를 알려주어야 한다.아파트

3-1. PORT의 정보

  • 0 ~ 65535 포트 사이에 선택해서 할당할 수 있다.
    0 ~ 1023 포트는 이미 나름의 약속되어 정해진 포트로 사용하지 않는 것이 좋다.
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443
  • IP와 PORT 정보를 합쳐서 소켓 주소(Socket Address)라고 부른다.

4. TCP (Transmission Control Protocol) ⭐️⭐️⭐️

  • OSI 계층 중 전송 계층에서 사용하고 있는 프로토콜 (전송 제어 프로토콜)
  • 출발지, 목적지에 대한 PORT, 전송 제어 순서, 체크섬 관련 정보로 인해 기존 IP가 가지고 있던 한계점을 보완하고 있다.

4-1. TCP 특징

  • 연결 지향적이다.
  • 데이터의 전송을 제어하므로 데이터의 신뢰성(데이터 전송 및 순서)을 보장한다.
  • 데이터 양이 크고 전송 속도가 느리다는 단점이 있다.

4-2. TCP 3 way handshake (가상 연결)

  1. 클라이언트에서 서버로 접속 요청(SYN)을 보낸다.
  2. 서버에서 요청을 수락하고(ACK), 클라이언트에게 연결 요청을 보낸다(SYN).
  3. 클라이언트에서 요청을 수락한다(ACK).
  4. 연결이 모두 완료되면 클라이언트에서 서버로 데이터를 보낸다.
    여기서 연결은 물리적 연결이 아니라 논리적 연결을 의미한다.

5. UDP (User Datagram Protocol)

  • IP에서 PORT 정보와 체크섬(=유효성 검증 정보) 정보만 추가된 상태
  • 거의 비어있는 하얀 도와지 같은 형태로 애플리케이션에서 추가 작업을 통해 기능을 확장 할 수 있다.

5-1. UDP 특징

  • 비연결지향
  • 비신뢰성(데이터 유실 + 전송 순서 보장 X)
  • TCP보다 가볍기 때문에 단순하고 빠른 장점이 있다.
    • TCP 보다 더욱 성능을 최적화 하기 위한 목적으로 사용한다.
    • 예) 실시간 동영상 플레이어, 게임, DNS

6. DNS

  • IP 주소의 단점을 보완하기 위해 나온 서비스
  • 기억하기 어려운 이름은 다른 곳(DNS 서버)에 저장해두고, 사람이 기억하기 쉬운 도메인 이름을 사용
  • 사용자는 긴 이름을 직접 모르더라도 아래와 같이 도메인 이름을 사용하여 그 서비스에 접근할 수 있게 된다.
    도메인명

6-1. DNS 전달 과정

  1. 도메인 명을 도메인 서버에 등록한다.
    • google.com 등록
  2. 사용자는 기억하기 쉬운 도메인 이름으로 요청을 보내게된다.
    • google.com 요청!
  3. DNS 서버에는 도메인 명에 연결된 IP주소를 사용자에게 응답(전달)한다.
    • 200.200.200.2 전달
  4. 최종적으로 사용자의 서버에서는 전달 받은 IP 주소를 이용해 해당 서비스에 접속하게 된다.
    • 200.200.200.2 접속

더 알아보기

1. 패킷

  • Pack + Bucket의 합성어
  • 정보를 보낼 때 특정한 형태로 네트워크를 통해서 전송되는 작은 데이터 조각
  • 패킷 교환 방식
    • 큰 사진 하나를 상대에게 보낸다고 했을 때, 패킷으로 나누어진 사진은 작인 패킷의 데이터 조각이 되어 상대방에게 전달할 때 그 조각들에게 일련의 번호를 붙여서 전달한다. (나중에 합칠 때, 순서가 꼬여있으면 안되니깐😅)
❓데이터를 통으로 안 보내고 이렇게 조각을 나누어 전송하는 방식을 취하는 이유는 뭘까?
- 데이터 크기에 따라 신호에 전송하는 주파수 범위에서 많이 차지하기 때문에 패킷의 흐름이 원활하지 못하고, 또 트래픽이 커지기 때문에 네트워크 전송이 정체 되기 쉬워서 이렇게 조각을 나누어 패킷을 전송하는 방식을 채용했다고 한다.

패킷 구조

2. 패킷의 구조

  • IP 패킷은 헤더로 정의되며, 해당 헤더에 많은 필드가 포함된다.
  • 헤더의 주요 요소는 아래와 같다.
    • 버전
      • 사용 중인 IP 버전을 식별하는데 사용
      • 현재 버전 4와 6중 하나만 선택 가능 ( IPv4, IPv6 )
    • TTL(Time to Live)
      • 패킷이 네트워크에 남아 있을 수 있는 시간
      • 이것을 처리하는 각 라우터는 이 카운터를 하나 이상 감소
    • 프로토콜
      • IP패킷의 데이터 부분에 전달되는 전송 계층 프로토콜 ( TCP vs UDP )
    • 헤더 체크섬
      • 검증 계산의 기반이 되는 데이터
      • 이 헤더가 손상되지 않은 경우 IP는 패킷이 양호하다고 간주한다.
    • 소스 주소
      • 패킷을 네트워크로 보는 장치의 IP 주소
      • ICMP(Internet Control Message Protocol) 전송 실패 또는 제어 메시지를 포함하여 네트워크 수준 오류 메시지가 전송 되는 곳
    • 대상 주소
      • 패킷이 전송되는 주소
    • 데이터
      • 이더넷 프레임과 같이 데이터 부분이 전송 계층, TCP 혹은 UDP로 전송

참조

1. 모든 개발자를 위한 HTTP 웹 기본 지식

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

2. https://enlqn1010.tistory.com/9

 

패킷이란 무엇일까? 패킷의 정의와 구조(What is packet?)

네트워크 공부를 해보신 분들은 '패킷(packet)'이라는 단어를 들어본 적 있을 것입니다. 매번 패킷 패킷.. 말하기만 하지 패킷의 정의에 대해서 정확히 알지 못하는 경우가 많은데요. 쉽게 정리해

enlqn1010.tistory.com

 

저작자표시 비영리 (새창열림)
    Ethan(기린)
    Ethan(기린)

    티스토리툴바