본문 바로가기

Java

Networking (네트워킹): IP주소와 URL

728x90

IP주소

컴퓨터(호스트)를 구별하는 주소: 4byte = 32 bit

 

IP 주소는 네트워크 주소와 호스트 주소로 나뉩니다. 

  •   IP 주소의 네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미합니다.
  •   IP주소와 서브넷 마스크를 비트 연산자 '&'로 연산하면 IP주소에서 네트워크 주소만 뽑아낼 수 있습니다.

즉, 서로 다른 두 호스트의 IP 주소를 서브넷 마스크로 '&' 연산을 수행해서 비교하면 두 호스트가 같은 네트워크 상에 존재하는지 확인할 수 있습니다.


메서드 종류

  • byte[] getAddress(): IP 주소를 byte 배열로 반환
  • static InetAddress [] getAllByName(String host): 도메인명(host)에 지정된 모든 호스트의 IP주소를 배열에 담아 반환
  • static InetAddress getByAddress(byte[] addr): byte배열을 통해 IP주소 획득 가능
  • String getCanonicalHostName(): FQDN(fully qualified domain name)을 반환
  • String getHostAddress(): 호스트의 IP주소를 반환
  • String getHostName(): 호스트의 이름을 반환
  • static InetAddress getLocalHost(): 지역호스트의 IP주소를 반환
  • boolean isMulticastAddress(): IP주소가 멀티캐스트 주소인지의 여부
  • boolean isLoopbackAddress(): IP주소가 loopback 주소(127.0.0.1) 인지의 여부

URL

인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것입니다.

 

형식

'프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조'

 

- 포트번호, 쿼리, 참조는 생략 가능

 

ex) http://www.helloworld.com:80/sample/hello.html?date=20231105#index1

  • 프로토콜: 자원에 접근하기 위해 서버와 통신하는 데 사용되는 통신규약(http)
  • 호스트명: 자원을 제공하는 서버의 이름(www.helloworld.com)
  • 포트번호: 통신에 사용되는 서버의 포트번호(80) - HTTP 프로토콜에서는 80번 포트를 사용하기 때문에 URL에서 포트번호를 생략하는 경우 80으로 간주, 즉 각 프로토콜에 따라 통신에 사용하는 포트번호가 다르며 생략되면 각 프로토콜의 기본 포트가 사용됩니다.
  • 경로명: 접근하려는 자원이 저장된 서버상의 위치 (/sample/)
  • 파일명: 접근하려는 자원의 이름 (hello.html)
  • 쿼리(query): URL에서 '?'이후의 부분 (date=20231105)
  • 참조(anchor): URL에서 '#'이후의 부분 (index1)

메서드 종류

  • URL(String spec): 지정된 문자열 정보의 URL 객체 생성
  • URL(String protocol, String host, String file): 지정된 값으로 구성된 URL 객체 생성
  • URL(String protocol, String host, int port, String file): 지정된 값으로 구성된 URL 객체 생성
  • String getAuthority(): 호스트명과 포트를 문자열로 반환
  • Object getContent()/getContent(Class [] classes): URL의 Content객체 반환
  • int getDefaultPort(): URL의 기본 포트를 반환 (http는 80)
  • String getFile(): 파일명 반환
  • String getHost(): 호스트명 반환
  • String getPath(): 경로명 반환
  • int getPort(): 포트 반환
  • String getProtocol(): 프로토콜 반환
  • String getQuery(): 쿼리를 반환
  • String getRef(): 참조(anchor) 반환
  • String getUserInfo(): 사용자정보 반환
  • boolean sameFile(URL other): 두 URL이 서로 같은 것인지 여부
  • void set(String protocol, String host, int port, String file, String ref): URL객체의 속성을 지정된 값으로 설정
  • void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref): URL객체의 속성을 지정된 값으로 설정
  • String toExternalForm(): URL을 문자열로 변환하여 반환
  • URI toURI(): URL을 URI로 변환하여 반환

[참고자료]

남궁 성, [Java의 정석 3rd Edition], 도우출판, 2016

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[Multi-Thread] 쓰레드 결과 기다리기 (Future, submit(), get())  (1) 2024.01.26
자바의 직렬화 (Serialization)  (0) 2023.11.10
자바의 스트림(stream)  (0) 2023.11.05
자바의 람다(Lambda)  (0) 2023.11.01
volatile 키워드  (2) 2023.10.29