인터넷 프로토콜

Single Ko·2023년 4월 3일
0

http

목록 보기
2/15

본 자료는 김영한님의 강의 모든 개발자를 위한 HTTP에서 내용을 정리한것입니다.

인터넷 망은 매우 복잡. 어떻게 원하는 목적지에 도착을 하는 것일 까?

IP(인터넷 프로토콜) 역할

  • 지정한 IP 주소 (IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달.

패킷 -> 출발지IP , 목적지IP, message => IP패킷, 클라이언트와 서버가 서로 패킷 전달.

IP 프로토콜의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송.
  • 비신뢰성: 중간에 패킷이 사라진다면? ->(패킷 소실) or 패킷이 순서대로 오지 않으면? -> (같은 패킷이 다른 노드를 타고 올 수 있다. 빠른 루트로 오는 패킷과 느린 루트로 오는 패킷.)
  • 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면? 어떻게 원하는 프로그램에 통신을 할 것인가.(화상통신, 게임, 웹 브라우저 등이 동시에 켜져있는 상황)
  • 이런 한계를 해결하기 위한 것 TCP,UDP

인터넷 프로토콜 4계층, OSI 7계층

TCP/IP 4계층 - DoD모델이라고도 함.
4. 애플리케이션 계층 -HTTP,FTP(socket 라이브러리, 애플리케이션 등..) =>사용자가 이용할 수 있는 서비스를 제공.
3. 전송계층 - TCP,UDP => 컴퓨터 내부에 있는 애플리케이션까지의 데이터 전송을 담당.
2. 인터넷 계층 - IP => 패킷을 목적지까지 전달.
1. 네트워크 인터페이스 계층 (LAN드라이버, LAN장비, EatherNet) => 네트워크 통신을 위한 하드웨어적인 요소를 처리.

OSI 7계층 -> 개념적.

  • 애플리케이션 계층
      1. 응용계층
      1. 표현계층
      1. 세션계층
    1. 전송계층
    1. 네트워크 계층 ( => TCP/IP의 인터넷 계층)
  • 네트워크 인터페이스 계층
    • 2.데이터 링크 계층
    • 1.물리 계층

OSI7계층이 무언가 많은것 같지만 사실 TCP/IP 4계층과 별 차이는 없고 좀 더 새분화해서 표현한 것이고 계층별로 수행하는 역할은 비슷하다.

TCP(전송 제어 프로토콜 Transmission Control Protocol)

  • 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 들어가있음..
    밑의 기능보다 더 많은 기능이 있지만 나열한 것이 중요 기능.
  1. 연결지향 - TCP 3 way handshake(가상 연결)
    • 양쪽 모두 데이타를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이타 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알수 있도록 한다.
    • 1.클라이언트 SYN (접속요청)보냄 -> 2.서버 SYN + ACK(요청수락) -> 3.클라이언트 ACK와 함께 데이터 전송

      SYN(synchronize) - 연결 요청
      ACK(acknowledgment) - 승인

  2. 데이터 전달 보증
    • 서버에서 데이터를 받으면 데이터를 받았다는 응답을 클라이언트에 보내줌. 안보내면 무언가 잘못됐다는 걸 알 수 있다.
  3. 순서 보장
    • 클라이언트에서 패킷1,2,3순서로 전송 ->서버 패킷1,3,2순서로 도착 => 패킷 2부터 다시 보내라고 전달
  4. 신뢰할 수 있는 프로토콜
  5. 현재는 대부분 TCP 사용

번외) 4-way-handshake

  • 서버와 클라이언트간의 연결을 종료하기 위해(세션 종료) 수행되는 프로세스

  • 1.클라이언트 FIN(연결종료 요청) 보냄, 클라이언트는 FIN-WAIT 상태 -> 2.서버 ACK, 서버는 CLOSE_WAIT상태 ->3.서버 FIN, LAST-ACK 상태 -> 4. 클라이언트 ACK FIN-WAIT상태에서 TIME-WAIT상태로 바뀜

    Server에서 FIN을 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황"이 발생한다면 어떻게 될까?

    클라이언트는 이러한 현상에 대비하여 Client는 Server로부터 FIN을 수신하더라도 일정시간 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 되는데 이 과정을 "TIME-WAIT" 라고 합니다. 일정시간이 지나면, 세션을 만료하고 연결을 종료시키며, "CLOSE" 상태로 변화합니다.

RTT

패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기 까지 걸리는 시간. 패킷 왕복 시간.

RTT를 줄이기 위한 방법들

  1. 이미지 스프라이트
  2. 코드 압축
  3. 이미지 Base64 인코딩

UDP(User Datagram Protocol 사용자 데이터그램 프로토콜)

  • 하얀 도화지. 기능이 거의 없다. IP와 거의 같지만+ PORT & 체크섬 정도만 추가.
  • UDP는 아무것도 안되 있다. 사용자가 무언가를 만들어 넣을 수 있다.
  • 다시 UDP가 떠오른다. -> 최적화에 최적화를 통해 HTTP 3의 경우에는 이제 UDP를 사용한다.
    - Why? 필요한 것들만 최적화해서 보낼 수 있기 때문..
    - TCP는 데이터가 많다. 또한 시간이 걸린다. (3 way handshake)

PORT

같은 IP에 둘 이상 연결 해야 한다면? -> 클라이언트가 같은 서버에 여러가지 패킷을 보낼 때 (게임, 화상통신,웹 브라우저.....) 같은 IP 내에서 프로세스를 구분할 수 있게 해주는 것.

IP가 아파트면 PORT는 동,호수.

Port의 범위 - > 0~65535 할당 가능.

Well Known PORT > 0~1023 사용하지 않는 것이 좋다.
ex ) FTP(20, 21) , SSH - 22, TELNET- 23, SMTP - 25, DNS -53, HTTP - 80 , HTTPS - 443 등…

DNS(Domain Name System)

  • IP는 기억하기도 어렵고, 변경될 수도 있다.(192.168.000.001.2) 사람은 숫자를 기억하는거보다 Name으로 기억하는게 쉬움.
  • DNS는 전화번호부, IP에 할당받은 DNS를 다시 도메인 명을 IP로 변경 해줌. EX) google.com (도메인 명) => IP 200.200.200.2
  • IP 주소는 바뀔 수 있음. 하지만 도메인 명은 바뀌지 않음(자기가 바꾸지 않는 한)
profile
공부 정리 블로그

0개의 댓글