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

eunyoung23·2022년 3월 17일
0
post-thumbnail

이 글은 인프런 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 인터넷 네트워크 강의 부분을 학습하고 정리한 내용입니다.

인터넷 네트워크

웹이나 HTTP 전부 인터넷 네트워크망 기반으로 보통 동작을 함 -> 인터넷 네트워크 학습이 HTTP 학습을 위한 사전 학습이라고 보면 됨.

  • 서로 정보를 주고받는 컴퓨터가 멀리 있으면 인터넷 망을 통해서 정보를 주고 받음 -> 그러나 인터넷이 단순하지 않음 : 예를 들어 중간에 해저 광케이블이 있을 수도 있고, 수많은 중간 노드들이 있음
  • 그 수많은 복잡한 상황들을 잘 헤쳐서 목적지까지 어떤 규칙, 방법으로 넘어갈까? 먼저 IP(인터넷 프로토콜)에 대해서 알아야 함.

IP(인터넷 프로토콜)의 역할

  • 지정한 IP 주소에 데이터 전달
  • 패킷이라는 통신 단위로 데이터 전달
    IP 패킷 정보 : 출발지 IP, 목적지 IP, 전송 데이터, 기타 등
  • IP 프로토콜의 한계
    비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함(마치 편지를 받을 친구가 편지를 보내는 주소에 안살아도 그냥 편지를 보내는 것과 같은 상황)
    비신뢰성 : 중간에 패킷이 사라지거나 패킷이 순서대로 안오는 문제가 발생함(한번에 보낼 것이 너무 많으면 패킷을 끊어서 보내는데 중간에 순서가 뒤엉킬 수가 있음 - 나는 hello world로 보냈는데 상대방은 world hello로 받음)
    프로그램을 구분할 수 없는 문제 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?
    -> IP 프로토콜만으로는 이 문제를 해결할 수 없음!

IP 프로토콜의 문제를 TCP가 해결을 해줌, UDP는 해결을 해줄 정도는 아닌데 도움이 되는 것들이 있음!

TCP(전송 제어 프로토콜)의 역할 : 전송을 어떻게 할지 제어를 함.

IP패킷 안에다가 TCP와 관련한 정보를 넣어줌 -> IP 프로토콜만으로 해결이 안되었던 순서 제어 문제나 이런 것들이 해결이 됨.

  • 연결지향 => 보내는 쪽과 받는 쪽이 연결이 되어있는지 먼저 확인하고 메세지를 보냄, 받는 쪽 컴퓨터가 꺼져 있으면 연결이 안되도록 함.
    TCP 3 way handshake : 연결이 되고 나면 그 다음에 데이터를 전송함 -> 그러나 가상 연결임(물리적인 연결은 아님) - 나를 위한 전용 lan선이 보장되는 것은 아님 , 논리적으로만 연결이 된 것임
  • 데이터 전달 보증 : 서버에서 잘 받았다고 응답을 줌, 내가 메세지를 보냈는데 만약 패킷이 중간에 누락이 되면 내가 알 수 있음
  • 순서 보장

-> 위와 같은 특징으로 TCP를 신뢰할 수 있는 프로토콜이라고 함

UDP(사용자 데이터그램 프로토콜 - User Datagram Protocol)의 역할

  • 연결 지향 X - TCP 3 way handshake 없음
  • 데이터 전달 보증 X
  • 순서 보장 X
    -> 포트 + 체크섬 정도만 추가한 기능을 가지고 있음, 애플리케이션에서 추가 작업이 필요함.
    -> TCP는 이미 쓰고 있어서 최적화하기가 어렵고 더 최적화하고 싶으면 보통 UDP에 손을 댐 : UDP는 아무것도 안되어 있으므로 그냥 애플리케이션에서 뭔가 원하는 것을 만들어내면 됨.

포트

클라이언트가 여러개의 서버와 통신을 하고 있는 상황이고, 패킷들이 내 IP로 올텐데 게임에서 오는 패킷인지 화상통화로 오는 패킷인지 웹 브라우저 요청으로 오는 패킷인지 알 수가 없음.
-> IP는 목적지 서버를 찾는 것이고 그 서버 안에서 돌아가는 애플리케이션을 구분하는 것이 포트임.
-> 같은 IP내에서 프로세스를 구분하는 것이 포트임
(비유) IP를 아파트라고 하면 포트는 몇동 몇호를 말하는 것 / 한 아파트 안에서 사람들이 사는 집을 구분해주는 것이 포트임.

포트는 0에서 65535까지 할당이 가능함.

  • 0에서 1023번은 잘 알려진 포트이므로 사용하지 않는 것이 좋음
  • FTP는 20,21번 포트
  • TELNET은 23번 포트
  • HTTP는 80번 포트
  • HTTPS(HTTP에 보안이 추가된)은 443번 포트

DNS(도메인 네임 시스템)

IP주소는 기억하기 어렵고 변경되기 쉽다 -> DNS서버를 사용하면 쉽게 해결됨.

  • 중간에 전화번호부 같은 서버를 제공하는 것
  • 도메인 명을 IP 주소로 변환하는 것이 가능해짐.

0개의 댓글