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

HJ·2022년 8월 2일
0

HTTP

목록 보기
1/8
post-thumbnail

김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 작성한 내용이며 학교에서 배운 내용을 추가적으로 작성하였습니다
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard


1. 인터넷 통신

  • 인터넷 상에서 컴퓨터가 통신 하는 방법

    • 인터넷 망을 통해 메세지를 보내고 받는다

    • 인터넷 망은 복잡하게 구성이 되어 있는데 어떻게 메세지가 도달할까?

➡️ IP 주소를 이용해서 목적지까지 메세지를 전달한다




2. IP ( 인터넷 프로토콜 )

2-1. IP

  • 인터넷 프로토콜 역할

  • 지정한 IP 주소에 데이터 전달

  • 패킷이라는 통신 단위로 데이터 전달


2-2. IP 패킷 정보 ( IP 데이터그램 )

  • 출발지 IP

  • 목적지 IP

  • 전송 데이터 (메세지)

  • IP 패킷을 인터넷 망에 전달하면 인터넷 망의 라우터를 거쳐 목적지 IP까지 전달

  • 이러한 전달 과정은 보통 Hop-By-Hop으로 이루어진다


2-3. IP 프로토콜의 한계 (문제점)

  • 비연결성

    • 연결 설정 과정을 거치치 않기 때문에 데이터그램이 독립적으로 전달

    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송

  • 비신뢰성

    • 중간에 패킷이 사라지는 경우 (패킷 소실)

    • 패킷이 순서대로 오지 않는 경우

    • 오류 복구 서비스를 지원하지 않기 때문에 오류와 상태 정보에 대해 알 수 있도록 ICMP 서비스를 지원한다

  • 프로그램 구분

    • 같은 IP 주소를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상인 경우

➡️ IP 프로토콜의 이러한 문제를 해결하기 위해 TCP, UDP를 이용




3. TCP, UDP

3-1. TCP/IP 계층

  • TCP는 응용 프로세스간 신뢰 전송, 저성능 전송

  • UDP는 응용 프로세스간 비신뢰 전송, 고성능 전송이며, 실시간으로 동작하는 것이 더 중요한 경우에 UDP를 사용한다


3-2. 메세지 전달 과정

  • 하나의 호스트는 하나의 IP 주소를 가지며, 여러 개의 응용 프로세스가 동작하고 있을 수 있다

  • 이 떄 포트번호를 통해 응용 프로세스를 구분한다

  • 응용 프로세스 주소는 IP 주소 + 포트 번호

  • 소켓이란 응용 프로세스가 네트워크로 메세지를 송신하고 수신하는 통로 자료구조이며 트랜스포트 계층 상에서 구현한다

  • 소켓 주소 = 응용 프로세스 주소 = IP 주소 + 포트 번호

  • socket 라이브러리 ( 소켓 API ) : 응용(어플리케이션) 계층과 전송 계층을 연결하는 기능을 제공하는 프로그래밍 인터페이스


3-3. TCP 정보

  • 출발지 포트

  • 목적지 포트

  • 전송 제어

  • 순서

  • 검증 정보


3-4. TCP 특징

  • Transmission Control Protocool : 전송 제어 프로토콜

  • 연결 지향 - TCP 3 way handshake (가상 연결)

    • 연결 후에 메세지를 전달한다

    • IP 프로토콜의 비연결성 문제 해결

  • 데이터 전달 보증

    • 데이터가 전송되면 수신 측이 데이터를 잘 받았다고 전달

    • 메세지가 제대로 전달되지 않으면 그 사실을 알 수 있음

  • 순서 보장

    • 패킷이 순서대로 도착하지 않으면 올바른 순서가 아닌 패킷부터 다시 보내도록 전달
  • 신뢰할 수 있는 프로토콜

  • 현재는 대부분 TCP 사용


3-5. TCP 3 way handshake

  • SYN : 접속 요청

  • ACK : 요청 수락


3-6. UDP 특징

  • User Datagram Protocool : 사용자 데이터그램 프로토콜

  • 기능이 거의 없음

  • 연결 지향 - TCP 3 way handshake X

  • 데이터 전달 보증 X

  • 순서 보장 X

  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

  • 정리

    • IP 와 거의 같다 + PORT + checksum

    • 어플리케이션에서 추가 작업 필요




4. PORT

  • 같은 IP 주소를 사용하는 서버에서 (한 대의 컴퓨터에서)
  • 통신하는 어플리케이션이(서버가) 둘 이상인 경우
  • 어떤 어플리케이션(서버)에서 전달된 패킷인지 알 수 없다

  • IP 패킷에는 출발지 IP와 목적지 IP가 존재하고
  • TCP 정보에는 출발지 포트, 목적지 포트가 존재하기 때문에
  • 포트는 같은 IP 내에서 프로세스를 구분한다

  • 0 ~ 65535 할당 가능 ( 16비트 )

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

    • FTP - 20, 21

    • TELNET - 23

    • HTTP - 80

    • HTTPS - 443




5. DNS

  • Domain Name System : 도메인 네임 시스템

  • IP 주소는 변경될 수 있고, 외우기 어렵기 때문에 DNS 를 사용한다

  • 즉, 도메인 주소를 사용하면 IP 주소가 변경되어도 문제가 발생하지 않고, 사용자도 IP주소로 접속하는 것보다 이름으로 접속하는 것이 편하기 때문에 사용자 편리성도 제공한다

  • DNS 서버에 도메인을 등록해서 사용 ( 도메인명 + IP 주소 )

  • DNS 서버에 도메인명을 전달하면 응답으로 그에 해당하는 IP 주소가 전달되고 전달받은 IP로 접속

  • 보통 전달하는 DNS 서버는 본인 네트워크 내의 로컬 DNS 서버로 전송한다

  • 로컬 DNS 서버는 반복적 혹은 재귀적 질의 방식으로 IP 주소를 알아낸다

  • 특정 서버가 질의하고 응답을 받으면 클라이언트 방향으로 전달하기 전에 자신의 캐시 메모리에 저장한다

  • 이렇게 저장된 캐시 정보는 TTL이 지나면 자동적으로 삭제된다

  • DNS는 IP 주소 변환 외에도 호스트 별칭, 메일 서버 별칭 등의 서비스를 제공한다

0개의 댓글