1.인터넷 네트워크

·2021년 5월 3일
0

이 복잡한 인터넷 망에서 나는 어떻게 미국에 있는 친구에게 'Hello'를 보낼 수 있을까?

IP(인터넷 프로토콜)

  • 최소한의 규칙
  • 지정한 IP주소에 데이터를 전달 할 수 있다
  • Packet(패킷) 이라는 통신 단위로 데이터를 전달한다
    • 패킷 안에는 여러 규칙이 있다

패킷

  • 패킷에는 내 IP, 상대방 IP, 전송 데이터를 담게 된다
  • 규약에 따라 노드들끼리 목적지를 향해 전달하면서 상대방에게 메시지를 가게 한다

  • 받은 곳에서는 메시지를 잘 받았다고 알려준다

IP프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다
      • 미국에 사는 친구가 컴퓨터를 꺼서 메시지를 못받는 상태인지를 모른다
  • 비신뢰성
    • 중간에 패킷이 사라지면?
    • 패킷이 순서대로 안오면?
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
      • 같은 컴퓨터에서 음악도 듣고 게임도 하는데 어떻게 확인하지

TCP

IP의 문제점인 비연결성, 비신뢰성, 프로그램 구분을 해결하기 위해 TCP가 나왔다

  • 인터넷 프로토콜 스택의 4계층

  • TCP/IP 패킷 정보
    - IP 안에 출발, 목적지 PORT, 전송제어, 순서, 검증정보 등을 넣게 된다

TCP특징

  • Transmission Controll Protocol (전송 제어 프로토콜)

  • 연결 지향 - TCP 3 way handshake (가상연결)

    • 연결을 먼저 하고서 전송함

    • 친구 컴퓨터가 꺼져있는걸 확인할 수 있다

      연결지향

    • 메시지를 보내기 전에 3 way handshake 로 서로가 연결이 가능한지 확인을 하게된다

    • 접속 요청 → 요청수락, 접속요청 → 요청수락

    • 이렇게 세번의 과정으로 서로가 연결이 가능한지를 확인한다

    • 그 후에 데이터를 전송한다

  • 데이터 전달 보증
    • 중간에 패킷이 누락되면 내가 누락된 것을 알 수가 있다
    • 내가 전송을 하면 데이터를 잘 받았다고 답변이 온다
  • 순서보장
    • 만약 클라이언트가 패킷1, 패킷2, 패킷3 순서로 메시지를 보냈다
    • 그런데 서버가 패킷1, 패킷3, 패킷 2 순서로 메시지를 받았다
    • 그러면 패킷 3, 패킷2를 버리고 다시 패킷2부터 다시보내라고 요청함
  • 즉 TCP 신뢰할 수 있는 프로토콜이고 현재는 대부분 TCP 사용한다

UDP특징

  • User Datagram Protocol (사용자 데이터그램 프로토콜)
  • 하얀 도화지에 비유 (기능이 거의 없음)
  • 3way handshake이 없다
  • 데이터 전달 보증이 안된다
  • 순서보장이 안된다
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
  • 애플리케이션에서 추가 작업이 필요하다
  • IP와 거의 같고 + PORT + 체크섬정도 추가가 된 것, 직접 최적화를 하고 싶을 때 사용하면 된다
  • 별로 사용 안하고 있지만 HTTP3이후로 UDP가 재조명되는 중

PORT

아이피는 하난데 어떻게 음악용 패킷인지, 게임용 패킷인지 구분을 하지?
이 때 필요한게 PORT

  • TCP/IP 패킷 정보

- 요기의 PORT가 이걸 도와줌
  • 아파트가 IP면 (하나의 PC) 몇동 몇호인지는 PORT가 정해준다
  • 0~ 65535까지 할당이 가능하다
  • 0~1023까지는 잘 알려진 포트기 때문에 사용하지 않는 것이 좋다
    • FTP : 20,21
    • TELNET : 23
    • HTTP : 80
    • HTTPS : 443

DNS

  • 아이피는 기억하기 어렵다!

  • 아이피는 변경될 수 있다

  • DNS는 전화번호부

  • 도메인명을 등록하면 아이피랑 연결할 수 있다

  • 도메인을 먼저 찾음

  • dns가 응답을 준다 얘 200.200.200.2 야

  • 그럼 거기로 접속을 하게 된당

출처 모든 개발자를 위한 HTTP 웹 기본지식

profile
💻📝🤯

0개의 댓글