1. HTTP
HTTP (Hyper text transfer protocol) 는 인터넷 상에서 데이터를 주고받기 위한 서버/클라이언트 모델을 따르는 전송 프로토콜이다. TCP와 UDP를 사용하며 기본 포트는 80번을 사용한다.
※ Protocol
프로토콜은 컴퓨터가 네트워크 내에서 어떤 방식으로 통신해야하는지 정한 규칙의 집합이다. (ftp, telnet, http, smtp, dhcp 등등)
2. Connectionless & Stateless
- Connectionless
• 서버에 연결하고 요청해서 응답을 받으면 연결을 끊어버린다.
• HTTP 통신에서 클라리언트가 request를 서버에 보내고 서버가 클라이언트에게 response를 보내면 연결을 끊는다.
• 동시사용자들의 접속유지를 최소한으로 할 수 있기 때문에 많은 사용자들의 요청을 처리할 수 있다.
• 헤더에 keep-alive 값을 주어 연결을 재활용할 수 있다.
- Stateless
• HTTP 통신이 종료되면 상태 정보를 유지하지 않는다.
• Connectless 방식으로 인해서 클라이언트의 이전 상태 정보를 알 수 없다. (로그 정보 유지 불가능)
• HTTP는 cookie와 Session을 사용해서 이 문제를 해결한다.
3. Cookie & Session
- Cookie
• 클라이언트와 서버의 상태 정보를 담고있는 정보 조각이다.
• 클라이언트 (브라우저) 로컬에 key-value 형식으로 저장된다.
• cookie 값을 통해서 클라이언트의 상태 정보를 저장했다가 참조할 수 있다.
• 사용자 인증 유효시간을 명시할 수 있는데, 이를 설정하면 브라우저가 종료되어도 해당 기간 동안에는 정보가 유지된다.
• Response 헤더에 set-cookie 속성을 사용하여 클라이언트에 쿠키를 생성할 수 있다,
- Session
• 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 클라이언트 (브라우저) 가 아닌 서버 측에서 관리합니다.
• 서버에서는 세션 ID를 두어 클라이언트를 구분하며, 웹 브라우저가 서버에 접속하여 브라우저가 종료될 때까지 인증상태를 유지한다.
• 정보를 서버에 저장하기 때문에 보안적으로 쿠키보다 유리하지만 많은 사용자가 접속하는 경우 그만큼 서버의 메모리를 사용하게 되어 성능에 문제가 될 수 있다.
• 클라이언트가 request를 보내면 서버에서 클라이언트에게 ID를 부여하는데 이것이 세션 ID이다.
• 클라이언트는 서버로부터 전달받은 세션 ID를 쿠키로 저장하고 이후 request 시에 해당 세션 ID를 포함하여 서버에 요청한다.
4. URI & URL
- URI (Uniform Resource Identifier)
• www (world wide web) 상에서 자원을 식별하는 통합 자원 식별자이다.
• 해당 자원의 위치를 알려주는 프로토콜이다.
- URL (Uniform Resource Locator)
• 흔히 웹 주소라고 부르는 것으로, 네트워크 상에서 자원의 위치를 나타내는 유일한 주소이다.
• URI의 서브셋, 하위 개념이다.
- URI 구조
• scheme: [//[user[:password]@]host[:port]][/path][?query][#fragment]
▸ scheme: 사용할 프로토콜 ex) http, https etc.
▸ user, password: 데이터에 접근하기 위한 사용자 계정의 이름과 비밀번호
▸ host, port: 접근할 대상, 서버의 호스트명과 포트 번호
▸ path: 접근할 자원의 경로에 대한 상세 정보
▸ query: 접근할 대상에 전달하는 추가 정보, 파라미터
▸ fragment: 메인 리소스 내부에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보
5. Methods
- GET: 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 데이터를 수신만 한다.
- POST: 서버에 데이터를 보내기 위해 사용된다.
- PUT: 타겟 리소스를 제출하는 데이터로 완전 교체한다.
- DELETE: 타겟 리소스를 삭제한다.
- HEAD: GET과 유사한 응답을 요구하지만 바디를 포함하지 않고 헤더 정보만 요청한다. 해당 resource의 존재 여부, 서버의 문제를 확인하기 위해서 사용한다.
- CONNECT: URI로 인식된 서버로의 연결을 맺는다.
- OPTION: 타겟 리소스를 위한 communication option 설명을 얻는다.
- TRACE: 타겟 리소스의 경로를 따라 메시지 loop-back 테스트를 한다. 클라이언트의 요청을 그대로 반환하여 서버 상태 확인 등에 사용한다.
- PATCH: PUT과 유사하지만 전체를 교체하지 않고 일부를 변경한다.
6. Request & Response Form
- Request
• header
▸ request method: GET, POST, PUT, PUSH ...
▸ request URI
▸ HTTP protocol version
• body
- Response
• header
▸ response protocol version: HTTP/1.1
▸ response code: 200 OK, 404 Not Found, 500 Internal Error ...
•body
▸ response message
'Computer Science > Network' 카테고리의 다른 글
[Network] SSL 암호화 (대칭키, 공개키, 개인키) (0) | 2022.11.05 |
---|---|
[Network] HTTP Header User-Agent (0) | 2022.04.19 |
[Network] Browser 통신 과정 (0) | 2021.10.15 |
[Network] TCP, UDP (0) | 2021.10.08 |
[Network] Internet (인터넷 네트워크 기본) (0) | 2021.10.06 |