[Network] HTTP&HTTPS

박세건·2024년 4월 29일
0

CS 학습

목록 보기
16/23
post-thumbnail

Port

Port란, 논리적인 접속 장소를 의미합니다. TCP/IP를 사용할때 클라이언트가 네트워크 상에서의 특정 서버 프로그램을 지정하여 사용합니다.
IP : 컴퓨터를 찾을 때 필요한 주소
Port : 그 컴퓨터 안에서 연결하고자 하는 프로그램을 찾기위한 수단.

  • 각각의 응용프로그램은 정해져있는 포트 번호를 이용합니다. 이 포트 번호를 전송 계층에서 이용하여 프로그램을 구분 합니다.

Well Known Port

서버 측에서 용도별로 포트번호를 정해서 동작되고 있고 클라이언트가 이 포트번호를 이용하여 접속합니다.
이러한 포트를 Well Known Port(잘 알려진 포트) 라고 합니다.
1~1023번 까지존재하고 이미 예약되어있습니다.

종류

  • 1 : TCP Port Service Multiplexer
  • 7 : ECHO (echo)
  • 13 : DAYTIME
  • 21 : FTP(File Transfer Protocal) : 파일 전송 프로토콜
  • 22 : SSH(Secure Shell) : 다른 사용자가 세션을 접근하지 못하도록 세션을 보안
  • 25 : SMTP : 메일 메시지 전송 프로토콜
  • 53 : DNS : 영문이나 한글 주소를 네트워크에서 찾아갈 수 있는 IP로 변환
  • 80 : HTTP : 웹전송
  • 123 : NTP(Network Time Protocol)

HTTP(Hyper-Text Transfer Protocol)

HTTP란, 웹 상에서 웹 서버와 웹 브라우저 사이에 데이터 전송을 위한 응용계층 프로토콜
과거에는 문서(하이퍼텍스트 문서)의 형태만 전달하는데 사용되었지만 현재는 이미지, 비디오 음성 등 모든 데이터 전송이 가능합니다.
추가로 웹뿐만아니라 모바일, IoT와 같은 통신에도 사용됩니다.

특징

  • 요청과 응답 구조
    • 서버에게 요청을 보내는 클라이언트
    • 클라이언트로 부터 요청을 받아 응답하는 서버
  • 메시지 교환 프로토콜
    • 클라이언트와 서버간의 HTTP 메시지를 주고받으면서 통신합니다.
    • 이는 SMTP 방식과 유사합니다.
  • 트랜잭선 중심의 비연결성 프로톹콜
    • 서버가 응답한 후에는 연결이 끊어집니다. -> 비연결성(Connectionless)
    • 서로의 요청과 응답 사이에 어떤 상태나 데이터를 유지하지 않습니다 -> 무상태(Stateless)
  • 일반적으로 안전한 TCP/IP를 기반으로 합니다.
  • 포트번호 : 80
  • 암호화에 대해 부족한 문제가 있었지만 이를 해결하기 위해 HTTPS가 등장했다.

HTTP는 TCP/IP 프로토콜 위에서 동작합니다.

HTTP는 데이터 교환을 위해 사용되고 TCP는 데이터 전송을 위해 사용됩니다.

동작과정

서버의 서비스를 필요로하는 사용자가 브라우저를 통해 URI로 서버에게 요청하면 서버는 그에 대한 결과를 응답

  1. TCP Connection
  • 서버에 접속하기 위해 TCP 연결합니다.
  • TCP 연결을 요청을 보내거나 응답을 받는데 사용됩니다.
  • 서버에 대한 여러 TCP 연결을 열 수 있습니다.
  1. HTTP 메시지 전송(요청)
  2. 서버로부터 응답을 확인(응답)
  3. TCP 연결을 끊거나 다른 요청을 위해 재사용합니다.

HTTP Message

요청

구조

  • HTTP Method와 Path, 프로토콜 종류와 버전이 존재
  • HTTP Header와 리소스를 요청하는 경로(어디서 보냇는지) 존재

HTTP Method

  • GET: 클라이언트가 서버에 리소스를 요청할 때.
  • POST: 클라이언트가 서버의 리소스를 새로 만들 때.
  • PUT: 클라이언트가 서버의 리소스를 수정할 때.
  • DELETE: 클라이언트가 서버의 리소스를 삭제할 때.

응답

구조

  • 프로토콜 종류, 버전, HTTP 상태코드(요청과 응답에 대한 결과를 나타내는 코드), HTTP 상태 메시지(요청과 응답해 대한 결과를 나태내는 문구)
  • HTTP 응답 Header(응답에 대한 정보들을 저장)
    • 응답할 데이터가 존재할때에는 Http body에 저장한다.

HTTP 상태 코드

  • 1xx : 정보, 요청을 받았고 계속 진행중
  • 2xx : 성공 : 요청이 성공적
  • 3xx : 리다이렉션 : 요청 완료를 위해 추가 조치 필요
  • 4xx : 클라이언트 오류 : 요청중 에러 밟생
  • 5xx : 서버 오류 : 서버에서 에러 발생

HTTPS (Hyper-Text Transfer Protocol Secure)

이름 그대로 HTTP에 암호화가 추가된 프로토콜입니다.
인터넷 상에서 정보를 암호화하는 SSL 프로토콜(또는 TLS)을 이용하여 클라이언트와 서버가 통신하는 프로토콜
TLS : Transport Layer Security 프로토콜

  • 공개키 암호화 방식을 사용
  • 포트번호 443
  • HTTP에 비해 속도가 느리다(요즘은 큰차이가 없다)
  • 암호화를 진행하는데 추가 비용이 발생한다(인증서 발급)
  • 검색엔지니에 최적화가 되어있습니다.

동작방식

  1. 클라이언트는 서버에게 HTTPS 요청을 합니다.
  2. 서버의 SSL/TLS 인증서를 확인하고, 암호화 알고리즘과 암호화 키를 협상합니다.
  • 이 과정을 SSL/TLS 핸드셰이킹이라고 합니다.
  1. 클라이언트는 협상된 알고리즘와 암호화 키로 데이터를 암호화 해서 전달합니다.
  2. 서버는 클라이언트의 요청을 처리하고, 암호화된 데이터를 응답합니다.
  3. 클라이언트는 응답을 받고 복호화 하여 응답 페이지를 렌더링 합니다.
profile
멋있는 사람 - 일단 하자

0개의 댓글

관련 채용 정보