발신자 -> 전화교환원(오퍼레이터) -> 수신자
발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 연결 -> 즉시성이 떨어짐
회선 교환 해결
데이터를 패킷(출발지와 목적지 정보가 담김) 단위로 나누어 전송
packet = pack + bucket
데이터 통신에 적용한 것으로 출발지 IP, 목적지 IP, 전송 데이터 등이 담김
비연결성 => 패킷을 받을 대상이 없어도 , 서비스 불능 상태여도 패킷 전송
비신뢰성 => 중간에 패킷이 소실될 가능성, 순서를 보장할 수 없음
HTTP 메시지가 Socket 을 통해 전달되어 TCP 정보를 생성(HTTP 메시지 포함)
IP패킷 생성(TCP 데이터 포함)되고 이더넷 프레임으로 새성되어 서버로 보내짐
TCP segment : IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전소제어, 순서, 검증 정보 포함
- 연결지향 : TCP 3way handshake
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 비연결 지향 ➡️ 빠른 속도 보장
- 데이터 전달 보증 x
- 순서 보장 x
- 신뢰성보다는 연속성이 중요(실시간 스트리밍)
계층 | 설명 | 종류 |
---|---|---|
물리 계층 | 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층 | 디지털 or 아날로그 신호 변경 |
데이터링크 계층 | 네트워크 기기 간의 데이터 전송 및 물리주소 결정 계층, 주소 정보 정의하고 출발지와 도착지 주소 확인 후 데이터 처리 수행 | 브리지 및 스위치, MAC 주소 |
네트워크 계층 | 실제 네트워크 간에 데이터 라우팅(최대한 빠르게 보낼 최적의 경로 선택) | IP 패킷 전송 |
전송 계층 | 컴퓨터 간 신뢰성 있는 데이터를 서로 주고 받을 수 있도록 하는 서비스 제공 계층 | TCP/UDP |
세션 계층 | 세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능 수행 계층, 컴퓨터 간의 통신방식 결정 | - |
표현 계층 | 응용 계층으로 전달하거나 전달받은 데이터를 인코딩 or 디코딩하는 계층 | 문자코드, 압충, 암호화 등의 데이터 변환 |
응용 계층 | 사용자와의 인터페이스 제공 계층 | 이메일 및 파일 전송, 웹 사이트 조회 HTTP |
각 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다.
데이터 캡슐화는 송신 측에서 이루어진다.사용자 데이터가 각 계층을 지나면서 하위 계층은 상위 계층에서 온 정보를 데이터로 취급한다. 그리고 자신의 계층의 특성을 담은 정보를 헤더에 붙히는 과정을 반복하는데 이를 데이터 캡슐화라고 한다.
반면, 수신 측에서는 반대로 헤더를 까면서 데이터가 상위 계층으로 올라가 결국 마지막 응용 계층에서는 원본 데이터만 남는데 이것을 데이터 역 캡슐화라고 한다.
계층 | 설명 | 종류 |
---|---|---|
네트워크 인터페이스 계층 | OSI 계층의 물리 + 데이터 링크 계층, 물리적인 주소로 MAC 사용 | LAN, 패킷망 |
인터넷 계층 | OSI 계층의 네트워크 계층, 통신 노드 간의 IP 패킷 전송하는 기능 및 라우팅 | IP, ARP, RARP |
전송 계층 | OSI 계층의 전송 계층, 통신 노드 간의 연결 제어, 신뢰성 있는 데이터 전송 담당 | TCP/UDP |
애플리케이션 계층 | OSI 계층의 세션 + 표현 + 응용 계층 , TCP/UDP 기반의 응용 프로그램 구현시 사용 | FTP, HTTP, SSH |
버전 | 지원 |
---|---|
HTTP/0.9 | GET메서드만 지원, HTTP 헤더X |
HTTP/1.0 | 메서드, 헤더 추가 |
HTTP/1.1 | 현재 사용 중, 가장 중요한 버전 |
HTTP/2 | 성능 개선 |
HTTP/3 | TCP 대신 UDP 로 성능 개선 진행 중 |
① 클라이언트 서버 구조
② 무상태 프로토콜 Stateless Protocol
③ 비연결성
④ HTTP 메시지
표현 헤더 : 표현 데이터를 해석할 수 있는 정보 제공 , field-name:field-value
- Content-Type
, Content-Encoding
, Content-Language
, Content-Length
메세지 본문 Message Body : 데이터 전달 => 페이로드
요청 헤더
From
: 유저 에이전트의 이메일 정보
Referer
: 이전 웹 페이지 주소 , 유입 경로 수집 가능
Host
: 요청한 호스트 정보(도메인) , 필수, 하나의 서버가 여러 도메인을 처리해야할 때
Origin
: 서버로 POST 요청을 보낼 때 요청을 시작한 주소 나타냄 , 요청 보낸 주소와 받는 주소가 다르면 CORS 에러 발생, Access-Control-Allow-Origin
과 관련
Authorization
: 인증 토큰을 서버로 보낼 때 , 토큰 종류 + 실제 토큰 문자 전송
응답 헤더
Server
: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
Date
: 메시지가 발생한 날짜와 시간
Location
: 3xx 응답 결과에 Location 헤더가 있으면 이 위치로 자동 이동, 201 응답은 요청에 의해 생성된 리소스 URI
Allow
: 허용 가능한 HTTP aptjem, 405에서 응답에 포함
Retry-After
: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간, 503 dmdekq
⑤ 단순함, 확장 가능
HTTP Secure : HTTP 와 달리 요청과 응답의 내요을 암호화하므로써 기존의 HTTP 프로토콜을 더 안전하게 사용할 수 있도록 함.
암호화할 때 사용할 키와 복호화할 때 사용할 키의 개수에 따른 방식
대칭 키 | 비대칭 키 (공개 키) |
---|---|
하나의 키만 존재 | 두 개의 키(공개키, 비밀키)가 존재 |
빠른 연산 속도 , 키를 관리해야하는 신경 | 비밀키로만 복호화 가능, 보안성이 뛰어남, 복잡한 연산으로 많은 시간 소모 ➡️ 클라이언트와 서버가 함께 사용하게 될 대칭키를 주고 받을 때 사용 |
HTTPS 가 서버인증과 데이터 암호화를 진행하는 HTTP 통신을 하는 소켓부분에서 사용하는 프로토콜