인터넷 네트워크 - PORT, URI

d·2023년 4월 15일
0
post-thumbnail

Port

클라이언트가 두 개 이상의 서버에 연결해야 한다면, 한 번에 여러 컴퓨터와 통신하게 된다. 이럴 경우 패킷이 혼동 될 수 있어 통신 마다 패킷을 구분할 필요가 있다. 이 때 이용되는 것이 포트인데, 영어로 항구, 항만 이런 뜻을 가지고 있는 단어인 만큼 지정된 항구에 지정된 배가 오가며 화물과 승객을 내리는 것이 연상된다.

TCP에서는 출발지 포트와 목적지 포트를 IP주소와 함께 포함한다. 이 포트를 이용해 같은 IP주소 내에서 애플리케이션의 프로세스를 구분 한다. 위 이미지에서 게임은 8090, 화상통화는 21000, 웹 브라우저는 10010번 포트로 정보가 들어오는 것을 볼 수 있다. 비유를 하자면, IP가 "00아파트"까지를 나타내는 주소라고 하면, 포트는 상세한 동, 호수 등을 나타내는 정보라고 할 수 있다.

하나의 IP 주소를 가진 클라이언트에서 여러 요청을 받아도 서버는 각각 정확한 응답을 할 수 있게 되는 것이다.

포트의 번호 & 잘 알려진 포트

  • 포트는 0 ~ 65535까지 할당이 가능하다
  • 0 ~ 1023은 잘 알려진 포트로, 사용하지 않는 것이 좋다
    - FTP : 20, 21
    - TELNET : 23
    - HTTP : 80
    - HTTPS : 443
    잘 알려진 포트, 그리고 사용하는 기술에 따라 컨벤셔널하게 쓰이는 포트가 있다고 하니 추후에 참고하면 좋을듯 하다.

DNS (Domain Name System)

서버에 요청을 하기 위해서는 상대방의 IP주소와 포트 번호를 알고 있어야하는데, IP주소와 포트번호를 매번 외우기엔 쉽지가 않다. 그리고 서버에서 새로운 IP를 발급받는다면 클라이언트입장에서 어떤 IP로 변경됐는지 소식을 듣지 못하면 아예 그 서버로 갈 수 없게 된다. 이런 문제를 위해 등장한 것이 DNS(Domain Name System)이다.

전화번호를 저장하고 관리하는 전화번호부 같은 서버를 제공해 도메인명을 등록하고, IP주소로 변환할 수 있는 원리다. 예를 들어 "google.com" 이라는 도메인을 구매해 등록하면 도메인명을 IP주소로 변환해서 관리하는 DNS 서버를 이용할 수 있게 된다. DNS서버에 저장되어 있는 도메인명을 통해 IP 주소를 모두 기억하지 않아도 되고, 변경하더라도 접근 할 수 있다.


URI

URI(Uniform Resource Identifier)

  • Uniform - 리소스를 식별하는 통일된 방식
  • Resource - 자원, URI로 식별할 수 있는 모든 것(제한 없음), html파일 뿐만 아니라 식별할 수 있는 모든 data 자원을 의미한다.
  • Identifier - 다른 항목과 구분하는데 필요한 정보.


한마디로 URI는 "자원을 식별하는 통합된 방법" 을 뜻한다. URI는 URL(Uniform Resource Locator)과 URN(Uniform Resource Name)을 포함하는 개념이다.

  • URI ( Uniform Resource Identifier) : 리소스를 식별한다.
  • URL ( Uniform Resource Locator) : 리소스에 위치를 부여한다. 변할 수 있다.
  • URN ( Uniform Resource Name) : 리소스에 이름을 부여한다. 변하지 않는다.

    똑같은 IP 주소를 url 방식으로도, urn 방식으로도 접속할 수 있다. 두 방식이 다른 점은, URL은 리소스가 있는 위치를 지정하는(Locator) 방식이며, URN은 리소스에 이름을 부여(Name)하는 방식이란 것이다.

URL

구글을 예시로 한 URL을 살펴보면
https://www.google.com:443/search?q=hello&hl=ko

아래와 같이 분석해 볼 수 있다.

  • scheme https - 프로토콜, 생략 가능하다.
  • 호스트명 www.google.com - DNS 서버에 호스트명이 저장되어 있으며 이는 IP 주소와 대응된다.
  • 포트번호 443 - 생략 가능하다
  • path /search 서버에 도착하면 서버 요청하고자 하는 특정 페이지에 대한 디렉토리까지의 경로.
  • 쿼리 파라미터 q=hello&hl=ko - 'key=value' 형태를 띄고 있다. 웹 서버에 제공하는 파라미터로, 클라이언트가 서버에게 요청할 때 건내주는 인자에 해당한다. 보면 알겠지만 우리가 보낸 쿼리는 hello에 대한 검색이고, 그에 대한 결과는 한국어 페이지(ko)로 띄워달라는 파라미터이다. ?로 시작하며 &로 파라미터를 추가할 수 있다.

REFERENCE: 모든 개발자를 위한 HTTP 웹 기본 지식

0개의 댓글