Ip & Port

kirin.log·2021년 9월 15일
2

❗️ ip 주소가 컴퓨터에 접속하는 주소라면, Port는 컴퓨터 안에 설치된 서버에 접속하는 주소.
이 두 개를 이용하여 특정 컴퓨터의 프로그램을 이용할 수 있다.

🦋 IP란 ?

IP(Internet Protocol) 란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다.


🌈 고정 IP, 유동 IP

고정 IP는 변하지 않고 컴퓨터에 고정적으로 부여된 IP이다. 한번 부여되면 IP 반납을 하기 전까지는 다른 장비에 부여할 수 없는 고유의 IP로, 보안성이 우수하기 때문에 보안이 필요한 업체나 기관에서 사용한다.

유동 IP는 변하는 IP이다. 인터넷 사용자 모두에게 고정 IP를 부여해 주기는 힘들기 때문에, 일정한 주기 또는 사용자들이 인터넷에 접속하는 매 순간마다 사용하고 있지 않은 IP 주소를 임시로 발급해 주는 IP이다.
대부분의 사용자는 유동 IP를 사용한다.


🌈 IP주소의 2가지 종류 : IPv4, IPv6

IP주소는 IPv4, IPv6 2가지 종류가 있으며, 일반적으로 IP 주소라 하면 IPv4 주소를 말한다.

IPv4는 IP version 4의 약자로 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다. 주소는 32비트 방식으로, 8비트씩 4개로 나누어진 최대 12자리의 번호로 되어 있으며 각 자리는 온점으로 구분한다.
ex) 115.683.245.881 (12자리) - 비트 수에 따라 갯수가 정해지므로 2의 32승인 43억개의 주소가 만들어 질 수 있다.

IPv4는 0 ~ 2^32 (약 42억 9천)개의 주소를 가질 수 있는데, 전 세계적으로 인터넷 사용자 수가 급증( 각 컴퓨터(=호스트)들은 다른 컴퓨터와 구별될 수 있도록 최소 한 개 이상의 고유한 IP주소를 갖고 있기 때문 )하면서,. IPv4 주소가 고갈될 위기에 처해있다.

이러한 고갈 문제를 해결하기 위해 등장한 주소가 바로 IPv6이다.

IPv6는 IP version 6의 약자로, IPv4의 주소체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소이다. 16비트씩 8자리로 각 자리는 콜론으로 구분한다.
ex) 2001:0DB8:1000:0000:0000:0000:1111:2222 - 128비트 주소체제를 채택하여 2의 128승 개의 주소가 만들어 질 수 있다(거의 무한)

네트워크 속도, 보안적인 부분뿐만 아니라 여러 면에서 뛰어나지만 기존의 주소체계를 변경하는데 비용이 많이 들어서 아직 완전히 상용화가 되지 않았다.

❗️ IPv4는 네트워크 상에서 데이터를 교환하기 위한 프로토콜이다. 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서(그리고 UDP에서도 일부) 보장한다.

인터넷 프로토콜(IP)은 메시지를 여러 IP패킷으로 분할하고 목적지로 라우팅 하는 원리이다. 그러나 컴퓨터는 대상에 여러 메시지를 보낼 수 있고, 대상은 어떤 패킷이 어떤 메시지에 속하는지 식별해야 한다.

  • 패킷은 순서없이 도착할 수 있다. 특히 두 2개의 패킷이 다른 경로를 따르는 경우에 빈번히 발생할 수 있다.
  • 패킷이 손상될 수 있다. 그 결과 어떤 이유로 수신된 데이터가 더이상 원래 전송된 데이터와 일치하지 않음을 의미한다.
  • 패킷은 물리적 계층 또는 라우터의 전달 테이블 문제로 손상될 수 있다. 메시지의 한 패킷이라도 손실되면 의미 있는 방식으로 메시지를 다시 결합하는 것이 불가능 할 수 있다.
  • 패킷은 중복될 수 있다. 동일한 패킷의 우발적 재전송이 발생할 수 있기 때문이다.

이러한 IP스택의 문제점을 보완할 수 있는 더 높은 수준의 프로토콜이 TCP이다.
👉 TCP : IP위에서 가장 일반적으로 사용되는 데이터 전송 프로토콜이며, 패킷 순서 지정,재전송 및 데이터 무결성을 위한 전략이 포함된다.
👉 UDP : TCP보다 문제를 덜 해결하지만 더 빠른 데이터 전송을 제공하는 대체 프로토콜이다.


🌈 TCP , UDP

TCP(전송 제어 프로토콜, Transmission Control Protocol)은 인터넷 프로토콜(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. ( TCP는 IP 위에서 가장 일반적으로 사용되는 프로토콜이기 때문에 인터넷 프로토콜 스택을 TCP/IP 라고도 한다.)
패킷의 신뢰성있는 전송을 보장하기 위해 IP의 상단에 사용되는 전송 프로토콜이다.

TCP는 근거리 통신망, 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.
TCP에는 패킷 손실, 순서가 잘못된 패킷, 중복 패킷 및 손상된 패킷과 같은 패킷 기반 메시징에서 발생하는 많은 문제를 해결하는 메커니즘이 포함되어 있다.

📌 TCP 특징

  • 배달 확인(네트워크 전송 도중 유실 또는 바뀔 수 있는데 받는 곳에서 배달 확인을 한다)
  • 재전송
  • 네트워크 혼잡 시 전송 지연
  • 쉬운 오류 감지

TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다.

❗️ 전송계층 : 계층 구조의 네트워크 구성요소와 프로토콜 내에서 소신자와 수신자를 연결하는 통신 서비스를 제공한다. 또한 연결 지향 data stream 지원, 신뢰성, 흐름 제어, 다중화 같은 편리한 서비스를 제공한다.


TCP는 웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.

TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)을 사용한다. 이것은 전달 확인 및 순차 보장 기능이 없는 대신 오버헤드가 작고 지연시간이 짧다는 장점이 있다.

📌 TCP 작동 방식
3방향 핸드셰이크를 통해 TCP 연결이 설정된다. 연결을 시작하고 승인하는 프로세스이다. 연결이 설정되면 데이터 전송이 시작되고 전송 프로세스가 완료되면 설정된 가상 회선을 닫음으로써 연결이 종료된다.


UDP(데이터그램 지향 프로토콜, User Datagram Protocol, UDP/IP)는 브로드캐스트 및 멀티캐스트 유형의 네트워크 유형의 네트워크 전송에 사용된다. UDP의 완전한 형태는 사용자 데이터그램 프로토콜이다.
(데이터그램 = 패킷 교환 네트워크와 관련된 전송 단위)

인터넷에서 응용 프로그램 간의 지연 시간이 짧고 손실 허용이 되는 연결을 설정하는 데 주로 사용되는 통신 프로토콜이다 . 수신 당사자가 동의하기 전에 데이터 전송을 활성화하여 전송 속도를 높인다.
결과적으로 UDP는 VoIP ( Voice over Internet Protocol ), DNS (도메인 이름 시스템 ) 조회, 비디오 또는 오디오 재생을 포함하여 시간에 민감한 통신에 유용하다.
UDP는 TCP (Transmission Control Protocol)의 대안이다.

UDP 프로토콜은 TCP와 거의 유사하게 작동하지만 모든 오류 검사 항목을 던진다(의사 소통 및 전달 가능성)
서비스가 데이터가 전달될 것이라는 보장을 제공하지 않거나 손실되거나 손상된 메시지를 재전송하기 위한 특수 기능을 제공하지 않는다.

📌 UDP 특징

  • 패킷 손실을 허용하는 대역폭 집약적인 애플리케이션 지원
  • 지연 감소
  • 대량의 패킷을 전송
  • 데이터 전송 가능성
  • 소규모 거래 허용

📌 UDP 작동 방식
UDP는 순서, 신뢰성 또는 데이터 무결성을 위해 암시적인 핸드셰이킹 대화 없이 간단한 전송 방법을 사용한다. UDP는 또한 네트워크 인터페이스 수준에서 이러한 처리의 오버헤드를 피하기 위해 오류 검사 및 수정이 중요하지 않거나 애플리케이션에서 수행된다고 가정한다. 또한 패킷 브로드캐스트 및 멀티캐스팅과도 호환된다.

TCP 는 신뢰할 수 있으나, 빠르지 않다. 주로 정확성을 요구하는 프로그램에 사용된다(기차표 예약 사이트)
UDP 는 신뢰할 수 없으나, 빠르다. 주로 스피드를 요구하는 프로그램에 사용된다(온라인게임 사이트)


🦋 Port란 ?

하나의 컴퓨터에는 여러개의 서버랑 설치 될 수 있다. 클라이언트가 컴퓨터에 접속할 때 어떤 서버와 접속하려고 하는지는 구분할 수 있는 방법이 필요하기 때문에 Port(포트) 개념이 활용된다.
즉, Port(포트) 개념은 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다.

네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다.
그런데 대부분의 경우 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있다.
컴퓨터에 여러 개의 서버가 실행되고 있다면, 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 한다. 이때 사용되는 것이 포트 번호이다.

🌈 포트 번호
포트 번호는 컴퓨터에서 실행되고 있는 서버를 구분 짓기 위한 16비트의 논리적 할당으로 0~65536번이 존재한다.

이 중에 0~1023번까지는 이미 어떤 통신이 해당 포트를 사용할 것인지 정해져 있다.
❗️ http 통신은 80번 포트를 사용하고, ssh 통신은 22번 포트를 사용하고, 메일을 확인하기 위해 메일 서버에 접속하기 위해서는 110번 포트를 사용한다.
즉, 포트는 "논리적인 접속장소를 나타내는 이정표"

이렇게 정해져 있는 0~1023번까지의 포트를 well-known port라고 한다.

포트(총 0번 ~ 65535번) 는 크게 3가지 종류로 구분됩니다.

0번 ~ 1023번 : Well-known port, 잘 알려진 포트
1024번 ~ 49151번 : registered port, 등록된 포트
49152번 ~ 65535번 : dynamic port, 동적 포트

이렇게 3가지로 분류되며 well-known port는 특정한 쓰임새를 위해서 할당한 TCP, UDP 포트 번호로 이루어져 있다.
주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이다. 따라서 포트 또한 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)이 관리한다.

컴퓨터에 있는 웹서버는 기본적으로 80번 포트와 연결(listening)되어 있다.
만약 웹서버를 하나 더 사용하고 싶은 경우 80번 포트는 이미 기존 웹서버가 사용하고 있기 때문에 사용할 수 없다.
그런 경우 well-known port가 아닌 다른 포트들과 연결하여 사용한다.
보통 관습적으로 8080 포트에 연결하여 사용한다.

그런데 이런 경우 웹 통신이 들어왔을 때, 80번과 8080번 포트 중에 어떤 포트와 통신할까?

정답은 URL에 포트번호를 적어서 통신할 포트를 구분한다.

예를 들어 http://naver.com에 접속하면 80포트에 연결된다.
( http://naver.com:80에서 80 포트는 생략이 가능하기 때문에 생략된 것이다. )
http://test.com:8080에 접속하면 8080포트에 연결된다.

  • URL 구성
    맨 앞에는 http와 같은 통신 규약이 온다.
    http, ftp 등등 어떠한 방법으로 통신을 할 것인지를 적는 것이다.
    그다음 도메인이나 ip를 적고, 뒤에 포트 번호를 적는다.

결국, IP 주소 및 포트 번호는 네트워킹에 사용되는 두 용어이다.
IP 주소포트 번호의 차이는, IP가 네트워크의 특정 장치를 식별하는 데 도움이되는 숫자 레이블이고 포트 번호가 장치의 프로세스에 할당 된 숫자 값이라는 점이다.

ip, port 참고 블로그

profile
boma91@gmail.com

0개의 댓글