0. Background
1) Networking 구조
1> client-server 구조
1개 이상의 server가 있고
여러 client가 server에 접속하여 필요한 서비스를 제공받습니다.
ex> mail, web server(HTTP), file server(FTP), application server'
2> Peer-to-Peer(P2P)
server 없이 client끼리 연결
ex> bittorrent
2) IP address
1> unique IP address가 있어야 합니다.
2> IP address는 현재 32-bit integer입니다.
3> 그리고 읽기 쉽게 dotted decimal notation 형식으로 씁니다. (e.g.) 163.239.1.17) (각 숫자의 범위 0~255)
4> private IP address는 범위가 따로 지정되어 있습니다.
조직 내부에서만 쓰기 떄문에 다른 IP address와 겹쳐도 됩니다. (private IP addresss는 unique하지 않습니다.)
외부와 통신을 하고 싶을 때에는 NAT(network address translation)을 이용해 public IP address로 바꿔줄 수 있습니다.
e.g.) wifi
3) Hostname & Domain name
1> hostname
특정 device에 이름을 준 것
2> domain name
administrative autonomy(어떤 기관)에 이름을 준 것
e.g.) naver.com, google.com
3> Internet Hostname
보통 hostname에 Domain name을 붙인 형태입니다.
e.g) www(hostname).google.com(domain name)
4> Fully Qualified Domain Name
4) Name Server
0> 등장 배경
ip address는 기억하기 어려운데 (domain name은 쉽고)
하지만 통신할 때에는 ip address가 필요합니다.
=> 그래서 name server가 필요합니다.
1> name server
e.g.) 168.126.63.1
public한 기능을 해줍니다.
name server에 접속해서 domain name들 찾아보고
name server에서 ip address를 줍니다.
그리고 web browser로 접속하게 됩니다.
2> 단점 및 해결
매번 그렇게 접속하기에는 단계가 길기 때문에
cache해둡니다.
5) Port number
하나의 device는 여러 기능을 수행할 수 있습니다. 그렇다면 어떤 기능을 사용할 지 구분해주어야 합니다.
구분해 주는 것을 port number입니다.
1> service를 구분하기 위해 port number를 씁니다.
e.g.) web server : 80
2> well known port : http(80), https(443), ftp(21), ssh(22), telnet(23)
well known port를 우리가 주로 써서 필요성을 잘 못 느낀다.
3> IP address와 port number가 있어야 server에 접속할 수 있습니다.
1. InetAddress
Id address를 다루는 class입니다.
1) Method

1> InetAddress를 얻어내는 method
static InetAddress[] getAllByName(String host) : (IP address가 여러개면)domatin named으로 모든 InetAddress를 얻어낸다.
static InetAddress getByAddress(byte[] addr) : IP address로 InetAddress를 얻어내는 것
tatic InetAddress getByName(String host) : domain name으로 로 InetAddress를 얻어내는 것
2> instance를 return
String getCanonicalHostName()
String getHostAddress()
String getHostName()
2) Example
1> <example 1>
InetAddress.getByname으로 InetAddress를 가져오고
그 instance들을 print

2> <example 2>

[1] getAddress로 32bit(4byte)의 IP address를 byte array로 저장
[2] byte의 범위가 -128~127이기 때문에 음수는 양수로 변환하려고 음수는 256을 더합니다.
3> <example 3>
4> <example 4>
getAllByName으로 여러 IP address를 얻어낸다.
2. URL (Uniform Resource Locator)
URL은 hostname보다 조금 더 구체적으로 지칭합니다.
1) URL
e.g.) https://www.example.com/index.html
1> 포맷
URL = scheme:[//authority]path[?query][#fragment]
[1] scheme : 어떤 프로토콜을 이용해서 접근할 것인지 (e.g. http)
[2] authority : [userinfo@]host[:port]
- host : (e.g. www.google.com)
- port : (default : http=80, https=443)
[3] path : 서버, 웹 안에서의 path
[4] query : 리소스에 보내는 query
[5] fragment : document에서 특정 항목으로 바로 갈 수 있게 하는 것
2) class URL
1> Constructor

2> Method

'JAVA' 카테고리의 다른 글
[Java] 7-3강 - 네트워킹 with 자바 3 (TCP Socket Programming) (0) | 2020.12.24 |
---|---|
[Java] 7-2강 - 네트워킹 with 자바 2 (HTML 파일 가져오는 법, jsoup) (0) | 2020.12.07 |
[Java] 6-4강 - Collection Framework 4 (Map) (0) | 2020.12.05 |
[Java] 6-3강 - Collection Framework 3 (Set) (0) | 2020.12.05 |
[Java] 6-2강 - Collection Framework 2 (Iterator, Arrays, Comparable) (0) | 2020.12.04 |