HTTP 프로토콜 – HTTP(하이퍼 텍스트 전송 프로토콜)
데이터 교환을 위한 프로토콜이며 서버/클라이언트 모델을 따릅니다.
HTTP 상태 정보를 저장하지 않는 상태 비저장 속성및 고객 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless의 기능가지다
장점
– 통신간 접속상태나 상태정보를 관리할 필요가 없어 서버 설계가 간단하다.
– 각 HTTP 요청에 대해 독립적으로 응답만 보내면 됩니다.
불리
– 이전 통신 정보를 알 수 없으므로 매번 인증을 수행해야 합니다.
– 이를 해결하기 위해 쿠키와 세션을 이용하여 데이터를 처리합니다.
www.naver.com에서 연결 시 발생하는 프로세스
1. 사용자가 브라우저에 URL(www.naver.com)을 입력합니다.
2. DNS 서버의 도메인 이름을 사용하여 서버의 실제 주소를 찾습니다.
3. TCP 3 핸드셰이크를 통해 IP 주소로 웹 서버에 연결합니다.
4. 클라이언트는 웹 서버에 HTTP 요청 메시지를 보냅니다.
5. 웹 서버는 HTTP 응답 메시지를 보냅니다.
6. 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되어 웹 브라우저에 표시됩니다.
TCP와 UDP의 차이점
TCP~이다 연결된 서비스3방향 핸드셰이크 프로세스를 통해 연결이 설정되기 때문에 높은 신뢰성보장하다
하지만 속도 단점: 상대적으로 느림도 존재한다
UDP는 비연결 서비스3-way handshaking을 사용하지 않기 때문에 낮은 신뢰성의 단점있지만
데이터 수신 여부를 확인하지 않기 때문에 속도의 이점있다
*TCP는 신뢰성이 중요한 경우에 사용됩니다.
B. 파일을 교환할 때.
UDP는 일반적으로 실시간이 중요한 스트리밍에 사용됩니다.
3방향 핸드셰이크와 4방향 핸드셰이크
3방향 핸드셰이크
– TCP 네트워크에서 통신하는 장치가 잘 연결되어 있는지 확인하는 방법
송수신기는 총 3번 데이터를 송수신하여 통신 가능 여부를 확인합니다.
4방향 핸드셰이크
– TCP 네트워크에서 통신하는 장치의 연결을 끊는 방법.
송신기와 수신기는 데이터를 총 4번 교환하고 분리합니다.
OSI 7개 레이어 및 각 레이어
1. 물리 계층: 데이터를 전기 신호로 변환하는 계층(비트 단위로 케이블, 중계기, 허브 등의 장치 사용)
2. 데이터 링크 계층: 데이터의 물리적 전송, 오류 감지 및 흐름 제어를 담당합니다.
(프레임 유닛, 이더넷)
3. 네트워크 계층: 목적지(패킷, 라우터)까지 가장 빠른 경로로 패킷을 전송하는 계층
4. Transport Layer: 최종 수신 프로세스로 데이터 전송을 담당하는 계층(단위: 세그먼트) (TCP, UDP)
5. 세션 계층: 컴퓨터 간의 통신을 위한 세션을 생성하는 계층
6. 표현식 계층: 이 계층은 데이터 형식을 정의합니다.
코드 간의 번역을 담당합니다.
7. 애플리케이션 계층: 사용자에게 통신 서비스를 제공합니다.
인터페이스의 역할.
물-드-사-전-삼-표-네
HTTP 메서드 및 사용 시기
가져오기 -> 데이터 가져오기
사후 -> 요청 데이터 처리(일반적으로 데이터 등록을 통해)
넣기 -> 데이터 변경(사용할 수 없는 경우 데이터 생성)
패치 -> 일부 데이터만 변경
삭제 -> 데이터 삭제
가져오기와 게시의 차이점
받다
– 헤더에 데이터를 추가하여 전송된 데이터를 조회하는 방식입니다.
데이터는 URL에 노출되어 있으므로 중요한 정보를 불러오면 안됩니다.
(독서에 많이 쓰이는 것 같다)
데이터 위치: 헤더
우편
– 본문에 데이터를 추가하여 전송되는 데이터를 추가하거나 변경하는 방식입니다.
이것은 완전히 안전하지는 않지만 URL에 데이터가 노출되지 않기 때문에 Get보다 안전합니다.
데이터 위치: 본문
세션 기반 인증과 토큰 기반 인증의 차이점
세션 기반 인증은 클라이언트로부터 요청을 받았을 때 클라이언트의 상태 정보를 저장하기 때문에 상태 저장 구조를 갖는다.
토큰 기반 인증은 상태 정보를 서버에 저장하지 않기 때문에 상태 비저장 구조입니다.
세션 기반 인증의 단점
1. 세션은 서버에 저장되므로 사용자가 증가함에 따라 서버에 과부하가 발생하여 확장성이 떨어질 수 있습니다.
2. 해커가 훔친 쿠키로 요청을 하면 서버는 데이터로 응답할 수밖에 없다.
(올바른 요청자 확인 불가)
이를 세션 하이재킹 공격이라고 합니다.
그러므로,
단일 도메인을 처리할 때는 세션 기반 인증을 사용하고 그렇지 않으면 토큰 기반 인증을 사용하는 것이 적절해 보입니다.
이는 세션을 관리하는 데 사용되는 쿠키가 단일 도메인 및 하위 도메인에 대해서만 작동하기 때문입니다.
여러 도메인에서 관리하는 것은 어렵습니다.