-
HTTP & TCP/IPCS(ComputerScience) 2021. 1. 18. 17:03
안녕하세요. 그린입니다!
이번 포스팅에서는 HTTP에 대해 알아보고 iOS 환경에서 해당 HTTP 서버에 있는 정보들을 요청하는 방법에 대해 알아보고
더 나아가 TCP/IP에 대해 알아보겠습니다..!
1. HTTP
: HyperText Transfer Protocol의 약자로 WWW상에서 정보를 주고 받을 수 있는 프로토콜 (주로 HTML 문서를 주고 받는데 사용된다.)
-. 클라이언트 (웹 브라우저)와 서버 사이에 이뤄지는 요청/응답 프로토콜이다.
-. TCP 기반으로 IP 위에서 동작하는 애플리케이션 프로토콜로 정의된다.
1) MacOS에서 서버와 HTTP로 통신하는 방법
-. GET 방식 정보 요청하여 가져오기
: String(contentsOf: url!)
-. POST 방식 정보 전송하기
: URLSession.shared.dataTask(with: request){...}
-> URLRequest: 독립적인 URL 로드 요청 라이브러리
-> URLSession: 애플이 제공하는 기본 통신 라이브러리
2) HTTP 메서드
: get, post, patch, put, option, trace, connect, head
-. get과 post 메서드는 둘다 특정 리소스에 대해 자원을 요청하는것인데 요청 방식이 다르다.
즉, get은 url에 요청을 붙이고 post는 body에 붙여 요청한다. 대용량 정보를 요청할때는 post가 적절하다.
-. put과 patch 메서드 모두 정보 수정을 할 수 있지만, put은 전체 엔티티에 대한 수정을 해야한다. 하나라도 비면 공란으로 표기된다.
반면, patch는 부분적 수정이 가능하다.
-. put으로 생성된 값이 없다면 새 글 작성과 같은 post의 기능도 한다.
-. head는 get 요청에서 본문을 빼서 헤더 부분만 가져온다. (이미지 정보(사이즈)에 대해 알아볼때 head로도 가능)
-. 멱등성: 연산을 여러번 거쳐도 결과값이 달라지지 않는 성질
-> PUT: 동일한 데이터를 계속 보내면 동일한 결과값이 1개만 중첩되어 가짐 (멱등하다)
-> POST: 동일한 데이터를 계속 보내면 동일한 결과값이 여러개가 스택처럼 게시글이 쌓임 (멱등하지 않다)
-> 해당 멱등성을 고려하여 메서드를 선택해야한다. (글 작성과 같을 시 멱등하지 않은 POST를 채택)
3) HTTP 상태코드
: HTTP 응답 상태 코드는 5개 목록으로 분류된다.
- 1xx (정보 / 조건부응답): 요청을 받고 프로세스 진행
- 2xx (성공): 요청을 성공적으로 받고 인식 / 수용
- 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치
- 4xx (클라이언트 오류): 요청이 잘못되었거나 처리 할 수 없음
- 5xx (서버 오류): 서버가 요청에 대한 충족 실패
[몇가지 예시에 따른 HTTP 상태코드]
-. 데이터 삭제 불가: 403(Forbidden)오류 - 권한 금지
-. 요청한 리소스 탐색 불가: 404(Not Found)오류
-. 데이터 업로드 및 작성 완료: 200 / 201
-. 서버 내부 오류: 500
-. http -> https 리다이렉션: 301(영구이동) / 302(임시이동)
-. 요청 URL 길어서 범위 벗어남: 414
4) HTTP와 HTTPS 차이
-. HTTP는 평문으로 암호화가 되지 않고 데이터가 패킷으로 정보가 전송된다. 패킷을 가로채면 정보가 누출될 수 있다.
-. HTTPS는 암호화가 되어 정보가 전송된다. 모든 구간이 암호화가 되지는 않는다.
-. HTTPS는 HTTP에서 보안 기능이 추가되어 SSL이라는 보안소켓계층 사용과 TLS라는 전송계층보안 프로토콜 사용
-. 장점: 보안의 강점과 CA 등 보안 인증기관에서 인증
-. 단점
1) 서버 과부하 발생 가능성 증가
2) 접속이 끊기면 처음부터 다시 접근해야함
3) 비용 (SSL 서버 비용)
4) 속도가 느림 (암호/복호화 연산 작업에 시간이 걸림)
5) HTTP v1.1과 v.2의 차이
-. v1.1은 1999년에 출시되었고 하나의 요청과 응답을 처리하고 다음 요청을 받는다. (동기식)
-. v.2는 별도로 각각 요청과 응답을 처리 할 수 있다. 즉 이전 요청 응답이 안와도 다음 요청을 처리 할 수 있다. (비동기식)
-. 현재까지 주로 v1.1이 많이 사용된다.
-. v1.1은 느리고 v.2는 빠르다.
2. TCP/IP
: 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음
: 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기에 TCP/IP 프로토콜 슈트라고 불린다.
-. IP (인터넷 프로토콜) & TCP (전송 제어 프로토콜)
-. IP는 패킷 전달 여부를 보증하지 않고 패킷을 보낸 순서와 받는 순서가 다를 수 있다.
-. TCP는 데이터 전달을 보증하고 보낸 순서대로 패킷을 받게 제어한다.
-. HTTP, FTP, SMTP 등은 TCP를 기반으로 IP 위에서 동작하기에 TCP/IP로 부름
[인터넷 프로토콜 스택 계층 구조]
응용 계층: DNS, TFTP, TLS/SSL, HTTP ...
전송 계층: TCP, UDP ...
인터넷 계층: IP
ARP: ARP, RARP
네트워크 인터페이스 계층: 이더넷, wi-fi, SMDS ...
[OSI 모델 계층]
응용 계층: HTTP, ...
표현 계층: ASN.1, ...
세션 계층: TLS, SSL, ...
전송 계층: TCP, UDP, ...
네트워크 계층: IP, ...
데이터링크 계층: 이더넷, 무선랜, ...
물리 계층: 전선, 전파, 모뎀, ...
-. 위와 같이 계층 구조에서 최상위에 응용 계층인 HTTP가 있고
그걸 다루기 위해 아래로 TLS, SSL, TCP, IP에 해당하는 계층이 순서대로 존재하는걸 볼 수 있다.
이처럼 이번 포스팅에서는 HTTP와 TCP/IP에 대해 간략히 알아보았습니다.
다소 서버를 받아오고 어렵긴하지만 분명 꼭 짚고 마스터하고 넘어가야하는 부분입니다.
모두 함께 힘내요!
감사합니다 :D
[참고자료]
'CS(ComputerScience)' 카테고리의 다른 글
멀티프로세스 VS 멀티스레드 (0) 2021.04.30 Cache (0) 2021.02.04 OS와 Process (0) 2021.01.05 자료구조와 알고리즘 (0) 2020.12.08 SOLID (0) 2020.12.03