1980년에 팀 버너스 리
라는 영국의 소프트웨어 공학자에 의해 개발되었다. 초기 웹은 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있게 고안된 정보 공간이었다.
웹 브라우저는 웹 서버와 통신하며 HTML
문서나 파일을 출력하는 GUI
기반의 애플리케이션이다. HTTP
를 이용하여 정보를 수신할 뿐만 아니라 웹 서버에 정보를 송신하기도 하며 사용자가 선택한 자원을 서버에 요청하고 그것을 해석하여 화면에 표시한다.
위 사진은 최초의 웹 브라우저이다.
URL
은 네트워크 상에서 웹 페이지, 이미지 등 리소스의 위치를 가리키는 표준 명칭이다. 서버의 자원 요청 시 사용된다.
Protocol
프로토콜은 시스템 간의 통신 규약이다.ftp
,mailto
등 다양하지만 웹 통신은HTTP/HTTPS
를 가장 많이 사용한다Domain
도메인은 웹 서버의 이름이다. 예를 들면naver.com
,google.com
등이 있다. IP주소를 직접 기입하여 접속할 수도 있다.Port
포트는 서비스가 실행되고 있는 문과 같다.HTTP
는 기본 80번 포트,HTTPS
는 기본 443번 포트를 사용한다.
Path
요청하고자 하는 자원에 대한 경로이다.Parameter
&
기호로 구분하며key
와value
로 짝을 이룬 리스트이다.Fragment
#
을 이용하여 이동을 원하는 요소의 id를 링크로 연결 시, 스크롤 이동 없이 해당 위치로 이동이 가능하다. 세부 항목에 대한 책갈피 역할로, 해당 요청을 서버에 전송하지는 않는다.
컴퓨터는 문자를 인식할 수 없기 때문에 숫자로 변환하여 저장한다. 입력한 문자는 미리 정해진 기준인 문자셋을 기준으로 변환되며 문자열의 모양은 변환되지만 의미는 변하지 않는다.
URL
에서 문법적인 의미를 가지고 있는 문자를 의미한다. 해당 문자를 예약 문자의 의미로 사용하고 싶을 경우 인코딩 후 사용한다.
HTTP 프로토콜은 웹 브라우저와 웹 서버(웹 애플리케이션 서비스)간의 통신을 위한 프로토콜이다.
클라이언트의 요청에 대한 부가적인 정보로, 대소문자 구분없이 문자열 다음에 콜론(:)이 붙으며, 그 뒤에 오는 값은 헤더에 따라 다르게 명시한다.
Host
: 요청하는 호스트에 대한 호스트명 및 포트번호User-Agent
: 사용자 웹 브라우저 종류 및 버전 정보Accept
: 클라이언트가 원하는 콘텐츠 타입 및 우선 순위 명시Connection
: 클라이언트와 서버 간 연결에 대한 옵션
클라이언트가 서버에게 사용자의 요청의 목적이나 종류를 알리는 수단이다. 대표적으로 GET
, POST
, PUT
등이 있다.
GET
GET
은 특정한 리소스를 가져오도록 요청할 때 사용한다.URL
에 파라미터를 그대로 전달하는 것이 특징이다.POST
POST
는 주로 데이터를 등록하거나 수정할 때 사용한다.HTTP Body
에 데이터를 실어 보내는 것이 특징이며, 보안적인 측면에서GET
에 비해 비교적 안전하기는 하지만 단순히 그 이유로POST
를 쓰는 것은 아니다. 데이터의 길이가 길어질 경우URL
의 최대 길이를 초과할 수 있기 때문에Body
에 넣는 방식으로 사용한다.
HTTP Response
패킷은 상태 코드를 포함하는데, 이 상태 코드들의 의미는 다음과 같다.
HTTP
프로토콜 자체는 암호화 통신이 아니기 때문에 도청, 위장, 데이터 변조 등의 공격이 쉽고 알아채기 힘들다. 따라서 암호화 통신의 필요성이 부각되면서 HTTPS
프로토콜이 등장하였다.
HTTPS
는 HTTP
에 SSL
인증서를 추가한 방식의 프로토콜이다. 보통 443
번 포트를 사용하며 웹 브라우저의 url
이 https://
로 시작한다는 점이 기존 HTTP
와 다르다. 또한 공개키 암호 방식을 사용한다.
대칭키는 암호화 키와 복호화 키가 동일한 암호화 방식을 뜻하는데, 계산 속도가 빠르다는 특징이 있지만, 키 관리가 번거롭고 키 교환을 해야 한다는 단점이 있다.
암호화 키와 복호화 키가 다른 암호화 방식이며 개인키와 공개키가 쌍을 이룬 형태이다. 키 교환이 불필요하며 키 관리가 수월하다는 장점이 있다. 그러나 대칭키 암호화 방식에 비하면 상대젹으로 느리다는 특징이 있다.
대칭키 암호화 방식과 공개키 암호화 방식의 장점을 모아놓은 암호 시스템이다.
클라이언트/서버 환경에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜이다. 클라이언트가 접속한 서버가 안전한 서버임을 보장해준다.
SSL(Secure Socket Layer)
: 전자상거래 등 웹 보안을 위해 넷스케이프에서 개발하였지만 2014년SSL3.0
사양에 취약점 발견TLS(Transport Layer Security)
:SSL3.0
을 기반으로 만들어진 인터넷 표준 프로토콜