통신 프로토콜
- 프로토콜Protocol: 컴퓨터 간에 정보를 원활하게 교환하기 위해 상호 간에 정한 여러가지 통신 규칙과 방법에 대한 약속
- 서버-클라이언트 간 요청과 응답에 적용되는 약속
- 프로토콜의 3 요소
- 구문(Syntax): 문법, 데이터의 형식이나 신호로 부호화 방법을 정의
- 의미(Semantics): 정확한 정보 전송을 위한 전송 제어와 오류 제어 방법을 정의
- 순서(Timing): 송신자와 수신자 간 혹은 양단의 통신 시스템, 망 사이의 통신 속도나 순서를 정의
-
- 네트워크 통신의 기초: TCP/IP.
- 웹 애플리케이션이 사용하는 HTTP
- 파일을 주고받을 때 사용하는 FTP종류
HTTP
서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜
어떠한 종류의 데이터도 전송할 수 있도록 설계
서버/클라이언트 모델: 클라이언트가 요청request을 보내면 서버는 처리해서 응답response
웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시킴 → 일반적으로 TCP/80 또는 TCP/8080
HTTP 메시지
메시지 타입은 요청/응답 두 가지
- 헤드(head): 메시지에 대한 설명, 메시지 본문(body)에 대한 설명
- 본문(body): 메시지가 담고 있는 데이터(HTML 페이지 등)
헤드의 각 줄은 CRLF로 구분, 첫 줄은 시작줄 Start-line, 나머지 줄은 헤더
헤더는 필드와 값으로 구성되며, HTTP 메시지 또는 바디의 속성을 나타냄
HTTP 요청(request)
HTTP version type, URL, HTTP method, HTTP request headers, Optional HTTP body
GET 방식은 URL에 페이지 접속 정보가 포함됨 → 보안 취약 → 파라미터가 포함되므로 별도의 메시지 body가 없어도 됨
POST 방식은 URL에 요청 데이터를 전달하지 않고 HTTP의 body 영역에 데이터를 실어 전송
HTTP Method
- GET: 정보를 요청하기 위해 사용
- POST: 정보를 보내기 위해 사용
- HEAD: 헤더 정보만 요청, 해당 자원의 존재 여부 확인 등에 사용
- PUT: 메시지에 포함되어 있는 데이터를 지정한 URI에서 지정된 이름으로 저장
- DELETE: URI에 지정되어 있는 자원을 서버에서 지움
- OPTIONS: 서버가 지원하는 Method 종류를 요청
- TRACE: 클라이언트의 요청을 그대로 반환, 서버 상태를 확인하기 위한 목적으로 주로 사용
HTTP 응답(response)
HTTP status code, HTTP response headers, Optional HTTP body
헤더에 서버의 프로토콜 버전, HTTP 상태 코드, 전달할 데이터의 형식, 데이터 길이 포함
헤더 정보 뒤에 빈 줄이 하나 들어가고 그 다음에 실제 데이터 전달
HTTP 상태 코드
상태코드 | 함축적 의미 | 설명 |
100번대 | 정보 전송 | - |
200번대 | 성공 | 클라이언트의 요청이 성공적으로 수신되어 처리됨 |
300번대 | 리다이렉션 | 클라이언트의 요청을 처리하려면 추가적인 조치 필요 |
400번대 | 클라이언트 측 에러 | 클라이언트 측 오류 발생 |
500번대 | 서버 측 에러 | 서버 자체에서 생긴 오류/클라이언트의 요구 사항을 제대로 처리할 수 없을 때 |
200 OK: 서버가 요청을 제대로 처리함
201 Created: 클라이언트의 PUT요청이 성공적임
301 Moved Permanently: 브라우저의 요청을 다른 URL로 영구 이동함
302 Moved Temporarily: 브라우저의 요청을 임시 URL로 바꾸고 Location 헤더에 임시로 변경한 URL의 정보를 작성
400 Bad Request: 클라이언트가 서버에 잘못된 요청을 함(헤더 포멧이 HTTP 규약에 맞지 않을 경우)
401 Unauthorized: 서버가 클라이언트의 요청에 대해 HTTP 인증 확인을 요구
403 Forbidden: 클라이언트의 요청에 대해 접근을 차단
404 Not Found: 클라이언트가 서버에 요청한 자료가 존재하지 않음
HTTPS(HTTP over Secure socket layer)
TLS 프로토콜을 도입하여 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화함
Port
- 네트워크 포트
네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소를 의미
보통 말하는 포트가 네트워크 포트
- 서비스 포트
네트워크 포트 중에 특정 서비스가 점유하고 있는 포트
ex) HTTP가 80번 포트를 점유하고 있다면 HTTP의 서비스 포트는 80번 포트
- 포트로 데이터를 교환하는 방식: 전송 계층 Transport Layer의 프로토콜
HTTPS의 기본 포트 번호: 443
'W3B H4CK1NG' 카테고리의 다른 글
[dreamhack] csrf-2 (0) | 2024.10.04 |
---|---|
[dreamhack] PHPreg_step1 (0) | 2024.09.09 |
[dreamhack] Lecture. Cookie (0) | 2023.11.28 |
[dreamhack] Lecture. Background: Web Browser (1) | 2023.11.28 |
[dreamhack] Lecture. Background: Web (0) | 2023.11.16 |