HTTP / HTTPS // TCP / UDP

keyCat·2024년 11월 20일

네트워크

목록 보기
2/2

참고
HTTP/HTTPS란? : https://doozi0316.tistory.com/entry/HTTPHTTPS%EB%9E%80-TCP-UDP-HandShake-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
HTTP와 HTTPS의 개념 및 차이점: https://mangkyu.tistory.com/98
HTTP 메세지란?: https://velog.io/@gparkkii/HTTPMessage

HTTP

HyperText Transfer Protocol

클라이언트와 서버 간 데이터(텍스트, 이미지, 동영상등 모든 종류를 의미)를 주고 받기 위한 프로토콜(규칙)
하이퍼텍스트 교환하기 위한 통신 규약
80번 포트 사용

HTTP는 String 기반으로 동작하는 텍스트 프로토콜, 평문 데이터 전송

HTTP 구조

Method, Path, Version of protocol, Headers, Body로 구성


출처: https://mangkyu.tistory.com/98

HTTPS

Hyper Text Transfer Protocol Secure
HTTP에 데이터 암호화가 추가된 프로토콜
443번 포트 사용
네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원

HTTPS 특징

대칭키 암호화와 비대칭키 암호화 방식을 모두 사용

대칭키 암호화
클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행
연산속도가 빠름

비대칭키 암호화
1개 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용
연산 속도 느림

서버는 공개키와 개인키의 쌍을 가진다.
공개키는 서버가 클라이언트와 안전하게 통신할 수 있도록 공유할 수 있는 키
개인키는 서버만 가지고 있으며, 이 키로 복호화 가능

서버-클라이언트 간의 공개키 암호화 과정

상단 참고 링크 가면 이미지로 정리되어있음

서버는 공개키(인증서)를 클라이언트에게 전달
클라이언트는 서버의 공개키로 세션키(대칭키)를 암호화해서 서버로 전송
서버는 자신의 개인키로 이 암호화된 세션키를 복호화하여 세션키를 얻는다
여기서 중요한 점은 클라이언트가 서버의 공개키로 세션키를 암호화하고, 서버는 개인키로 이 암호화된 세션키를 복호화하여 얻음
즉 세션키는 대칭키 암호화에서 사용되지만, 세션키의 전달은 비대칭키 암호화

HTTP 메세지 구조

요청

POST /book/list HTTP/1.1
Host: localhost:8080(요청헤더)

method : HTTP 메서드
Request-target : 요청대상 (book)
HTTP Version

응답

HTTP/1.1 200 OK
Content-type : text/html;charset=UTF-8 (응답헤더)
Content-length: 3000 (응답헤더)

<HTML>
 <body>...</body>
</HTML>

HTTP version
HTTP 상태 코드

바디에 전송할 데이터가 담긴다.

TCP와 UDP

HTTP와 HTTPS는 TCP 위에서 동작하는 애플리케이션 계층의 프로토콜
TCP와 UDP는 전송 계층의 프로토콜

TCP/UDP 택배 방식
HTTP/HTTPS 택배에 담긴 물건, 신뢰성이 중요한 물건이라 TCP로 보냄

TCP 특징

Transmission Control Protocol

  • 1:1(클라이언트 : 서버) 연결을 지향
  • 신뢰할 수 있는 통신을 제공
    (데이터가 정확히 도착하도록 오류 검출, 순서제어등)
  • 일반적인 HTTP통신은 TCP 방식을 따른다

TCP 동작

클라이언트와 서버가 서로 연결을 설정
클라이언트 서버요청 -> 서버 요청 확인 응답 -> 클라이언트 확인/연결 수립
연결 수립 후 데이터를 주고 받음

UDP

User Datagram Protocol

1:1 혹은 1:N 비연결(클라이언트와 서버가 연결되어있지 않은)을 지향
신뢰할 수 없는 통신을 제공

UDP 동작

클라이언트와 서버가 연결을 맺지 않고 데이터 송수신
데이터를 보낼때 단순히 대상 주소(IP,포트)를 지정 후 데이터 전송
연결을 맺지않으므로 수신 여부 확인 불가
온라인 게임, 실시간 스트리밍에서 사용(영상, 음성 통화)

정리

'빠른 데이터 전송','오류 검사 수정이 필요없는 경우' = UDP
'데이터 신뢰성','안전성, 순서 보장' = TCP

profile
취준생 개발로그 /ᐠ •ヮ• マ Ⳋ

0개의 댓글