ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP & TCP/IP
    CS(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

     

    [참고자료]

    https://kor45cw.tistory.com/295

    https://m.blog.naver.com/ksseo63/221800624602

    '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
Designed by Tistory.