늦은 프로그래밍 이야기
HTTP, HTTPS 본문
선수 개념
IP 주소 (Internet Protocol Address)
- 인터넷에 연결되어 있는 모든 장치들을 식별할 수 있도록 각각의 장비에서 부여되는 고유주소.
- 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다.
IPv4
- 전세계적으로 보편화 되어 사용하는 IP버전.
- 주소길이 : 32bit
- 표시방법 : 4개 부분에 8bit씩 10진수로 표시 (ex. 202.30.64.22)
- 주소갯수 : 256*256*255*256 = 약 43억개
IPv6
- 확장성과 용량 면에서 한계를 보이는 IPv4를 대체할 버전.
- 주소길이 : 128bit
- 표시방법 : 8개 부분에 16bit씩 16진수로 표시. (ex. 2001:0203:abcd:ffff:0000:0000)
- 주소갯수 : 약 43억*43억*43억*43억개
도메인 네임 시스템 (DNS, Domain Name System)
- IP주소를 이해하기 쉽게 문자로 표현한 것.
- IP주소에 도메인 네임을 할당하고 관리하는 시스템을 DNS라고 한다.


포트 (Port)
- 운영체제 통신에서의 종단점.
- IP주소를 통해 목적지 호스트까지 도달한 후에 어떤 프로세스에서 데이터를 받을 것인지 알아야 할 때 쓰인다.

통신 방법
회선통신 (Circuit Switching) 방식
- 회선의 트래픽이나 이동효율을 고려하지 않은 채 미리 정하는 방식.
- 데이터를 전송하는 시점의 트래픽, 혼잡도 등의 요인에 따라 효율이 달라진다.

패킷교환 (Packet Switching) 방식
- 회선통신의 비효율성, 단점들을 개선하기 위해 등장.
- 미리 이동경로를 정하지 않고, 데이터를 패킷이라는 작은 단위로 나누어 전송하는 방식.
- 전송 당시 가장 효율적인 경로를 설정하여 최종 목적지까지 이동한다.
- 패킷으로 작게 나누는 이유는 커다란 데이터가 네트워크의 대역폭을 점유하면 다른 패킷의 흐름을 막을 위험이 있기 때문.

TCP/IP
IP
- 패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜.
- 패킷 전달 여부를 보장하지 않고, 순서도 보장하지 않는다.
TCP
- 패킷을 안전하게 전달해주는 전송 프로토콜
- IP 위에서 동작하며 데이터의 전달을 보장하고 순서도 보장한다.
- 흐름제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
- 혼잡제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리속도 차이를 해결하기 위한 기법
TCP/IP
- IP + TCP = 인터넷 프로토콜 + 전송 제어 프로토콜
- 효율적으로 빠르게(IP) 보내면서 안전하게(TCP) 전달해주려는 목적
HTTP (HyperText Trasfer Protocol)
- 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜
1) 특징
- 단방향성 : 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다.
- 비연결성 : 클라이언트의 요청으로 서버와 연결 후, 응답의 데이터를 전송하면 연결을 종료한다. (실시간 통신을 할 수 없음.)
2) 문제점
- HTTP는 평문 통신이기 때문에 도청이 가능하다.
- 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능.
- 완전성을 증명할 수 없기 때문에 변조가 가능.
HTTP 메소드
- 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
주요 메소드
- GET : 리소스를 조회할 때 사용. 데이터는 query를 통해 전달.
- POST : 리소스를 새롭게 생성할 때 사용. 데이터는 메시지 바디를 통해 전달.
- PUT : 리소스가 있으면 대체하고 리소스가 없으면 생성. 데이터를 덮어쓴다.
- PATCH : 리소스를 수정할 때 사용. 리소스의 일부분만 변경할 때 사용.
- DELETE : 리소스를 제거할 때 사용.
메소드 속성
- 안전(safe methods) : 계속 호출해도 리소스를 변경하지 않는 특성
- 멱등(idempotent methods) : 동일한 요청을 여러번 보내도 한번 보내는 것과 똑같은 결과를 갖는 것.
- 캐시가능(cacheable methods) : 응답 결과를 서버에 캐시해서 사용해도 되는 메소드

HTTP 상태코드
- 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 정보.
종류
- 100번대(Informational) : 요청이 수신되어 처리중
- 200번대(Successful) : 요청 정상 처리
- 300번대(Redirection) : 요청을 완료하려면 추가 행동이 필요
- 400번대(Client Error) : 클라이언트 오류, 서버가 요청을 수행할 수 없음.
- 500번대(Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함.
HTTP 통신흐름
- 사용자가 입력한 URL 주소 중 도메인네임 부분을 DNS서버에 검색하고, 해당 도메인 네임에 해당하는 IP주소를 찾아온다.
- HTTP 프로토콜을 사용하여URL정보와 IP주소를 포함하는 HTTP 요청 메세지를 생성, TCP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 서버로 전송
- 요청을 받은 서버는 웹페이지 URL 정보 중 PATH와 HTTP METHOD에 맞는 액션을 취한다.
- HTTP 프로토콜을 사용하여 HTTP 응답 메세지를 만들고 TCP 프로토콜을 사용하여 인터넷 망을 통해 클라이언트로 전송
- HTTP 응답 메세지는 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력
HTTPS
- HTTP(HyperText Transfer Protocol)의 보안(Secured) 버전
- SSL/TLS 프로토콜을 사용해 HTTP를 암호화하여 주고 받을 때 쓰는 통신 프로토콜
암호화 방식

대칭키 방식
- 암호화 및 복호화에 드는 비용이 적다.
- 키를 상대방과 함께 사용해야 하기 때문에 전달하기가 쉽지 않다.
비대칭키 방식
- 수학적 공식으로 만들어진 두개 한쌍의 키로 구성, 하나는 공개 키로 사용하고 다른 하나는 개인 키로 사용한다.
- 공개 키로 데이터를 암호화하면 개인 키로만 복호화 가능, 개인 키로 데이터를 암호화하면 공개 키로만 복호화 가능
- 보안성이 뛰어나다
- 구현하기가 어렵고 암호화 및 복호화 속도가 느리다.
- 주로 전자서명과 메세지 송신에 사용
'내일배움캠프 > Computer Science' 카테고리의 다른 글
| 프로세스, 스레드, 비동기 (0) | 2022.11.20 |
|---|