티스토리 뷰
CS
범무룩
2020. 7. 30. 20:08
HTTP
- Hyper Text Transfer Protocol이며 인터넷에서 데이터를 주고받을 수 있는 프로토콜(규칙)이다.
- 사용 이유는 HTTP라는 통신규약을 만들고 모든 프로그램이 이 규약에 맞춰 개발한다면 서로 정보교환이 가능하기 때문에 사용한다.
동작
- 사용자가 브라우저를 통해서 어떠한 서비스를 URL을 통하거나 다른 것을 통해 요청하면 서버에는 해당 요청사항에 맞는 결과를 찾아 응답하는 형태로 동작한다.
특징
- TCP/IP를 이용하는 응용 프로토콜이다.
- 비연결성 프로토콜
- 이 단점을 해결하기 위해 Cookie와 Session이 등장했다.
- 요청/응답 방식
Request Method
- GET
- 서버 데이터를 URL형식으로 요청하여 데이터를 받는다.
- POST
- 클라이언트에서 서버로 전달하고자 하는 정보를 보낸다.
- PUT
- 서버에 데이터 저장, 수정, 생성을 요청한다.
- DELETE
- OPTIONS
- HEAD
- TRACE
Status Code
- 1XX (조건부 응답)
- 2XX (성공)
- 3XX (리 다이렉션)
- 클라이언트의 요청을 마치기 위해 추가 동작이 필요하다.
- 4XX (요청오류)
- 5XX (서버 오류)
GET VS POST
- HTTP 프로토콜을 이용해 서버에 요청할 때 사용한다.
GET
- 요청하는 데이터가 Request Message의 Header부분의 URL에 담겨 전송된다.
- 전송할 수 있는 데이터의 크기가 제한적이다.
- 데이터가 URL에 노출된다.
- 캐싱이 가능하다.
POST
- 요청하는 데이터가 Request Message의 Body부분에 담겨 전송된다.
- 리소스를 생성/병경 할 수 있다.
- 길이의 제한 없이 데이터 전송이 가능하다.
TCP / UDP
- 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 프로토콜이다.
TCP (User Datagram Protocol)
- 연결형 프로토콜
- 흐름 제어
- 데이터 속도를 조절해 수신자의 버퍼 오버플로우를 방지한다.
- 혼잡 제어
- 높은 신뢰성
- UDP보다 속도가 느리다.
- 3-way handshaking으로 연결 시작 / 4-way handshaking으로 끝맺음
- 신뢰성이 있는 정송을 해야 할 때 사용
- 1:1 통신
UDP (User Datagram Protocol)
- 비 연결성 프로토콜
- 정보를 주고받을 때 절차가 없다.
- 순서가 보장되지 않는다.
- TCP보다 속도가 빠르다.
- 실시간 서비스(Streaming)에 주로 사용된다.
- 1:1, 1:N, N:N
HTTP와 HTTPS의 차이점
- 인터넷에서 정보를 암호화하는 SSL(Secure Soket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고받는 통신규약이다.
- 즉 HTTP를 SSL방식으로 암호화한 것이 HTTPS이다.
- SSL방식은 공개키 암호화 방식이다.
대칭키 VS 비대칭키
- 대칭키
- 비대칭키
- 암호화, 복호화 할 때 키가 동일하지 않은 경우
공개키 암호화
- 공개키로 암호화 한 뒤 개인키로 복호화한다.
- 네트워크를 이용하여 키를 전달하면 위험하다. 따라서 개인키는 본인만 가지고 암호화를 할 수 있는 공개키를 모두에게 공개한 후 해당 공개키를 이용해 암호화된 정보, 데이터를 제삼자가 가로채도 개인키를 통해 복호화해야 하기 때문에 내부 데이터를 안전하게 지킬 수 있다.
- 즉 공개키로 암호화된 데이터는 개인키를 가진 자만이 풀 수 있기 때문에 공개키 암호화 방식을 사용한다.
웹 브라우저에 URL을 입력하고 화면이 출력되기까지
- 웹 브라우저에 URL을 입력하고 Enter를 누른다.
- 웹 브라우저가 입력한 URL을 분석한다.
- 제일 앞에 접근할 프로토콜을 적는다.
- 구분자 ":"를 적는다.
- // 뒤에 특화된 정보를 넣는다.
- 분석
- 구조가 맞는 경우
- 분석 후 구조가 맞는 경우
- HSTS(HTTP Strict Transport Security) 목록을 받아와 URL내의 주소와 일치하면 HTTPS로 요청하고 일치하지 않으면 HTTP로 요청한다.
- DNS(Domain Name Server)에 IP 주소를 요청한다.
- 요청을 보내기 전 해당 Browser에 Domain이 Cache 돼 있는지 확인한다.
- Reculsive Server의 Cache를 확인한다.
- 없으면 Root Server - TLDServer - AuthoriativeServer에 IP주소를 물어본다.
- IP주소를 받은 뒤 ARP를 통해 실질적으로 접근해야 할 IP주소를 할당받은 MAC 주소를 추적한다.
- TCP 통신을 통해 Socket을 연다.
- HTTPS인 경우 TLS(보안 SSL) 과정을 추가한다
- HTTP 요청
- HTTP 응답
- 웹 브라우저 그림 그리기
DNS
- 문자로 만들어진 도메인을 컴퓨터가 처리할 수 있는 인터넷 주소(IP)로 바꿔주는 시스템 또는 서버를 말한다.
소켓(Soket)
- TCP/IP를 이용하는 창구 역할을 한다.
- 두 프로그램이 네트워크를 통해 서로 통신할 수 있도록 양쪽에서 생성되는 링크의 단자이다.
- 즉 통신을 위한 일종의 통로라고 말할 수 있다.
- 소켓에는 서버 소켓, 클라이언트 소켓이 있다.
- 서버 소켓은 로컬 IP를 가지고 포트를 열어 클라이언트를 기다린다.
- 클라이언트 소켓은 IP주소를 이용해 목적지를 찾아 포트에 연결한다.
- 서버 소켓이 수락하면 포트를 이용해 데이터를 주고받는다.
« 2025/12 »
| 일 |
월 |
화 |
수 |
목 |
금 |
토 |
| |
1 |
2 |
3 |
4 |
5 |
6 |
| 7 |
8 |
9 |
10 |
11 |
12 |
13 |
| 14 |
15 |
16 |
17 |
18 |
19 |
20 |
| 21 |
22 |
23 |
24 |
25 |
26 |
27 |
| 28 |
29 |
30 |
31 |
|
|
|