Network 완전 기초 (feat: iOS 개발자)

minsson·2022년 11월 18일
0

제가 나중에 보기 위해 정리해놓은 자료이므로 틀린 내용이 있을 수 있습니다. 댓글로 피드백 주시면 바로 수정하겠습니다. 감사합니다. ☺️ - 민쏜 -


🏞️ 네트워킹은 어떻게 이루어지는가?

  • 모든 기기가 인터넷과 관련된 여러 프로토콜(규약)에 따라 소통한다.
    • 클라이언트 입장의 컴퓨터와 아이폰, 서버 입장의 컴퓨터 등, 네트워킹에 개입하는 모든 기기를 말한다.
    • HTTP, IP, TCP, UDP, FTP, IEEE 802.3 등…
    • 위와 같은 다양한 프로토콜의 집합을 간단하게 TCP/IP 라고 줄여서 말하기도 한다.
    • 이 중 iOS 개발자로서 웬만큼 알고 있어야 하는 것은 HTTP이다.

🧩 WWW를 구성하는 기술

  • WEB 쪽에서는 HTML 언어로 내용을 작성하고, HTTP라는 규범을 따르며, 주소를 나타내기 위해 URL을 사용한다.
    • HTML: HyperText Markup Language
    • HTTP: HyperText Transfer Protocol
    • URL: Uniform Resource Locator
  • iOS 개발자인 우리는 HTTP에 집중하면 된다.

🧩 HTTP (HyperText Transfer Protocol)

  • 다른 프로토콜들과 마찬가지로, 클라이언트와 서버 모두 이 HTTP 프로토콜을 준수하여 데이터를 주고 받는다.
  • 이름에서 알 수 있듯, 하이퍼 문서를 전송하는 것에서 시작 되었다.
  • 현재는 이미지, 음성, 영상, 파일, JSON 등 모든 형태의 데이터를 전송할 수 있다.
  • 버전
    • HTTP 0.9 - 1990년 등장
    • HTTP 1.1 - 1997년 1월 - 2014년
      • 이때 우리가 사용하는 대부분의 기능이 내장되어, 현재도 많은 웹사이트에서 사용하고 있다.
    • HTTP 2.0, HTTP 3.0 - 2015년 이후… (성능 개선 중)
      • 22년 현재 기준 일반적인 사이트는 대부분 2.0버전이고, 정말 트랜디한 소수의 웹사이트만 3.0이다.
        • 웹브라우저에서 개발자도구를 통해 볼 수 있다.
        • 그래도 이제 조금씩 3.0으로 넘어가는 추세라고 한다.

🏞️ 네트워킹의 계층

🧩 요약

  • 이 부분의 내용은 자세히 몰라도 될 것 같다. 그래도 궁금해서 조사해서 정리해봤지만, 완전히 이해하지는 못했다. 백엔드 개발자 분들이 공부하시는 것 같다.
  • 아무튼 iOS 개발자 입장에서는 Request를 잘 작성하면 나머지는 OS단에서 알아서 해준다. 이 Request를 잘 보내기 위해 HTTP 공부가 필요하다.
  • 네트워킹의 계층 관련해서는 비유적으로 이해해보려고 한다.
  • 결과적으로, 각 계층을 통과하며 이런 모양이 된다.
    • 그림의 전송데이터에는 Request, Response가 들어간다고 보면 될 것 같다.
    • 아래의 덩어리는 네트워크 통신을 위한 여러 프로토콜을 지킨 결과물이다. 이 덩어리를 클라이언트와 서버가 주고 받는 것이다.
    • 보내는 쪽에서는 전송데이터를 각 계층에서 포장하고, 받는 쪽에서는 덩어리의 바깥쪽에서부터 포장을 풀어 안에 있는 전송데이터를 확인한다.
  • 채팅 프로그램에서 메시지를 보내면 아래와 같은 일이 일어난다고 한다.
    1. (HTTP) 프로그램에서 메시지 생성
    2. (TCP) Socket 라이브러리를 통해 전달
    3. TCP 세그먼트 생성
    4. (IP) IP 패킷 생성, TCP 데이터 포함
    5. 이더넷 프레임 워크에 포함되어 서버로 전송

🧩 TCP(Transmission Control Protocol, 전송 제어 프로토콜)가 뭘까?

  • 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다.
  • 패킷교환(Packet Switching) 방식으로 네트워킹할 때의 문제점을 해결하고자 만들어, 신뢰성을 보장할 수 있는 통신 규약이다.
    • 네트워크 환경의 안정성이 떨어지고, 중간에 데이터가 유실되거나 너무 늦게 전달되는 등 신뢰성이 떨어지는 문제가 있었다.
  • Request를 안전한 편지봉투에 넣는 작업이라고 생각하면 된다.
  • 현존하는 상당수의 네트워크 프로그램은 TCP를 기반으로 통신한다. 물론 필수는 아니지만, 신뢰성이 떨어지는 리스크가 발생한다.
  • 실시간성이 중요하거나 응답성이 중요한 프로그램의 경우 TCP가 비효율적이라 UDP라는 걸 개발했다.
    • TCP에 쓰이는 흐름 제어 및 신뢰성 제어 알고리즘이 현대 기준으로는 너무 구식이고 성능상 비효율적이라는 평을 듣고 있기 때문이다.
    • UDP에 대한 자세한 내용은 지금의 나에게는 불필요해 보이므로 나중에 알아보자.

🧩 IP(Internet Protocol, 인터넷 프로토콜)가 뭘까?

  • 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약
  • 컴퓨터는 운영체제가 다를 수 있고, 프로그램은 구현 언어가 다를 수 있어, 네트워크에서 이들이 통신하기 위한 공통 통신 규약이 필요하고, 이게 IP 이다.
    • 현재의 인터넷에서 IP를 통하지 않고 통신하는 건 불가능하다.
  • 보내는 컴퓨터(호스트)에서 받는 컴퓨터(얘도 호스트)까지의 통신을 책임진다.
  • 편지 봉투에 보내는 주소, 받는 주소를 작성하고 우표를 붙여서 우체통에 넣는 일과 우편함에 들어온 편지를 꺼내서 나한테 온 편지가 맞는지 확인하는 정도의 작업이라고 생각하면 된다.
  • IP 주소
    • IP 통신에 필요한 고유 주소로, 논리적 주소
    • 통신 기능이 제공되는 기기들이 서로 통신을 하기 위해 필요한 고유 번호
    • 각 장치 간 통신을 식별할 수 있는 전화번호라고 생각할 수 있다.
    • 네트워크 계층(Network Layer)에서 사용되는 주소
      • MAC 주소와 구분 필요
        • MAC 주소: MAC 주소는 데이터 링크 계층(Data Link Layer)에서 사용되는 주소로, LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인 주소이다.
        • 모든 네트워크 장비 혹은 컴퓨터는 NIC(Network Interface Card)에 고유한 MAC 주소를 가지고 있다. 물리적으로 거기에 써있다.
        • IP 주소가 있는데 굳이 왜 필요하지?
          • IP 주소가 마치 배송지 주소라면, MAC 주소는 주민번호라고 할 수 있다. 같은 IP 주소더라도 MAC 주소가 다르면 구별할 수 있게 되는 것이다. 그렇다면 IP 주소 대신 MAC 주소만 사용하면 되는 것 아니냐?라고 물을 수도 있다. 만약 IP 주소대신 MAC 주소만 사용한다면, 라우팅 테이블에 너무 많은 정보가 기록되어 다운되고 말 것이다. 따라서 IP 주소와 MAC 주소 모두를 이용하는 것이 가장 효율적이다.
          • 출처: [네트워크] MAC주소와 ARP(Address Resolution Protocol)란? | MAC 주소의 필요성
  • IP에 대한 자세한 내용은 지금의 나에게는 불필요해 보이므로 나중에 알아보자.

참고

앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의

TCP / UDP (feat. IP, IP Packet)

[네트워크] MAC주소와 ARP(Address Resolution Protocol)란? | MAC 주소의 필요성

나무위키 - TCP

나무위키 - IP

profile
풋사과 iOS 개발자

0개의 댓글