Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS] HTTP, HTTPS, Socket #5

Closed
seungchan2 opened this issue Apr 29, 2022 · 0 comments
Closed

[CS] HTTP, HTTPS, Socket #5

seungchan2 opened this issue Apr 29, 2022 · 0 comments
Assignees
Labels

Comments

@seungchan2
Copy link
Owner

Socket

서버와 클라이언트 양방향 연결이 이루어지는 방식

양방향으로 연결되기 때문에, 서버가 클라이언트의 요청이 없어도 데이터를 전달할 수 있음

계속 Connection을 유지하기 때문에, http 통신보다 상대적으로 리소스 부하가 높다

실시간 스트리밍, 채팅과 같은 서비스에서 사용

HTTP

HTTP 통신의 특징

단방향 통신

클라이언트 요청이 있을 때만 응답하는 방식

서버가 클라이언트에게 먼저 정보를 주지 못함

HTTP를 통해 서버의 새로운 데이터를 받기 위해서는 클라이언트의 요청이 필요

클라이언트의 요청이 없다면 서버의 데이터를 받아올 수 없음

필요한 경우에만 요청하기 때문에, 항상 연결이 되어 있는 소켓에 비해 부하가 적음

HTTP 메시지 구조

1. 라인

메시지의 가장 기본 내용인 응답/요청 여부, 메시지 전송 방식, 상태 등이 작성됨

매우 정형화되어 있어, 무조건 한 줄로만 작성됨

Get/pillCount/pillCount HTTP/1.1
POST/GET 등의 전송 메서드 / 요청 내용에 대한 경로 / 요청 형식에 대한 버전 정보

2. 헤더

메시지 본문에 대한 메타 정보가 들어가는 부분

필요한 만큼 여러 줄로 작성됨

길이가 유동적, 바디와 구분을 짓기 위해 한 줄의 공백이 삽입됨

Host: swiftapi.rubypaper.co.kr:2029.
Content-Type: application/json

3. 바디

실제로 보내고자 하는 메시지 본문 내용이 들어가는 부분

길이가 유동적임

HTTPS

HTTPS 통신의 특징

TCP(전송계층)와 http(응용계층) 사이에 작용하여, 데이터를 암호화하여 전송

서버와 암호화 과정을 거쳐야 하기 때문에 사실상 도메인 부분은 노출이 됨

즉, URL을 확인해야 하기 때문에, URL은 암호화 되지 않고 노출됨

그 외에 쿼리스트링, 파라미터 (HTTP body) 등은 암호화 되어 전송

https와 달리 http 통신의 경우, 네트워크 패킷 프로그램을 통해서 통신 과정의 값을 확인하거나 위변조 할 수 있는 위험이 있음

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant