ji_iin
iOSLog
ji_iin
전체 방문자
오늘
어제
  • 분류 전체보기 (56)
    • Swift (8)
    • iOS (6)
    • 알고리즘 (34)
    • CS (3)
    • 회고 (3)
    • 제품리뷰 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 2022년 회고
  • 그래프이론
  • django
  • 수학
  • 그래프탐색
  • 개발회고
  • SWiFT
  • 재귀
  • 백준
  • ios
  • 자바
  • Python
  • 깊이우선탐색
  • 대기업코테
  • 백트래킹
  • 너비우선탐색
  • swiftUI
  • 알고리즘개념
  • 다이나믹 프로그래밍
  • 깊은복사와 얕은복사
  • Bye2023
  • 프로그래머스
  • 정렬
  • opional
  • 회고
  • 공식문서
  • 구조체와 클래스
  • 파이썬
  • 브루트포스 알고리즘
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ji_iin
CS

[Web] Http가 무엇이며 Https와 차이점은?

[Web] Http가 무엇이며 Https와 차이점은?
CS

[Web] Http가 무엇이며 Https와 차이점은?

2021. 11. 2. 20:30

HTTP (Hyper Text Transfer Protocol)

HTTP는 텍스트 기반의 통신 규약으로 서버/클라이언트 모델을 따라 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 

유명한 팀 버러스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 정보를 공유하는데 큰 역할을 했다.

HTTP 동작 방식은 클라이언트와 서버가 요청(request)하고 응답(response) 하는 형태로 동작되는데

 

Request(요청)

client ➡️ server

클라이언트가 브라우저를 통해 서버에게 원하는 서비스를 요청하는 2가지 방식이 있다.

 

1. GET 방식 : 요청 데이터의 인수를 웹 브라우저 URL을 통해 전송하고 인수를 ?로 값을 넣고, &로 결합시켜 전달한다.

예를 들면  url 뒤에 추가로 인수를 더해 전달할 수 있다.

"http://localhost:8088/department/edit?id=4&name=julia" 

이렇게 url에 인수가 그대로 노출되니 GET 방식으로 요청하면 보안에 취약하다는 단점이 있다.

 

2. POST 방식 : 요청 데이터 인수를 url에 전송하지 않아 요청 데이터 기록이 없고, HTTP 헤더에 데이터를 넣어 전송한다.

그래서 GET 방식에 비해 상대적으로 처리속도가 느리지만, 다른 사용자가 링크로 페이지를 열어볼 수 없으므로 안전하다는 장점이 있다.


Response(응답)

server ➡️ client

서버가 요청받은 서비스를 클라이언트에게 응답을 하는 형태로 5개의 클래스로 응답 코드가 구분된다.

자세한 내용은 위키피디아를 참고하면 도움이 된다.

 

  • 100번대 : 정보 전송, 프로세스를 계속 진행한다.
  • 200번대 : 요청성공, 수신 및 처리를 한다.
  • 300번대 : 리다이렉션, 요구를 처리하기 위해 추가로 동작해야 된다.
  • 400번대 : 클라이언트측 에러, 오타가 있거나 문법이 잘못되어 처리 할 수 없다.
  • 500번대 : 서버측 에러, 서버 자체에 발생한 오류나 오류사항을 제대로 처리 할 수 없다.

 

HTTP는 암호화가 되지 않는 평문 데이터를 전송하는 프로토콜이라, HTTP로 비밀번호나 개인정보가 담긴 내용을 주고 받으면 제 3자가 정보를 조회 할 수 있어 이를 해결하기 위해 HTTPS가 등장하게 되었다.

 

 

 

HTTPS  (Hyper Text Transfer Protocol Secure)

HTTP에 데이터 암호화가 추가된 프로토콜이다. HTTPS는 HTTP는 기본 80번 포트를 사용하는 반면에 HTTPS는 443번 포트를 사용해서 중간에 제 3자가 정보를 볼 수 없도록 공개키 암호화를 지원하고 있다.

HTTPS는 공개키/개인키 암호화 방식을 통해서 데이터를 암호화 하는데 단어 그대로 공개키는 모두에게 공개가능한 키이며, 개인키는 나만 가지고 있어야 되는 키이다.

공개키는 은행의 계좌번호와 유사하고, 개인키는 비밀번호나 PIN과 유사하다고 비유할 수 있다.

자세한 차이점에 대한 내용은 이 블로그를 참고하면 좋을 것 같다.

 

 

 

 


사실 이 글을 쓰게 된 이유는 날씨 API를 사용해서 url을 받아 도시의 날씨 정보를 연동하는 iOS 앱 개발을 테스트로 하고 있는데, http가 담긴 url을 보내니 정상적인 json 형식의 url이 아니라 error가 출력되고 https로 수정하니 정상 작동되어 왜 다르게 동작되는지 차이점을 정확하게 알고 싶었다.

다음은 테스트 해 본 결과를 캡쳐해보았다.

 

 

http로 보내니 Security 에러 발생

 

 

https로 보내니 정상 작동

 


참고 사이트

  • https://mangkyu.tistory.com/98
  • https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

[Django] 페이징과 검색창 기능 구현하기  (0) 2021.08.07
[Django] CSV 파일 import 해서 SQLite 데이터베이스에 넣기  (0) 2021.07.30
  • HTTP (Hyper Text Transfer Protocol)
  • Request(요청)
  • Response(응답)
  • HTTPS  (Hyper Text Transfer Protocol Secure)
'CS' 카테고리의 다른 글
  • [Django] 페이징과 검색창 기능 구현하기
  • [Django] CSV 파일 import 해서 SQLite 데이터베이스에 넣기
ji_iin
ji_iin
개발성장일지🐥

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.