네트워크란?
“유/무선 으로 연결되어 있는 Device들의 집합 ”
네트워킹?
디바이스들 간에 미리 정의된 프로토콜을 사용하여 데이터를 교환 하는것.
이를위해서는 프로토콜이 필요하다.
클라이언트 서버구조
Client -> Server
request
Server -> Client
response(ACK)
서버 : 서버프로그램이 돌고있는 장비
프로토콜
디바이스간 데이터 통신을 위해 필요한 규약
Hyper Text Transfer Protocol
File Transfer Protocol
SMTP 등등.
패킷
패킷은 Header, Body부분으로 나뉜다.
Header은 Address, checksum 등 으로 구성되고
Body는 Data로 구성된다.
소켓
소켓?
TCP / IP 프로토콜의 프로그래머 인터페이스를 의미
네트워크 프로그래밍에서 개발자에게 네트워크에 접근할 수 있는 인터페이스 제공
포트?
프로세스를 구분할 수 있는 주소
16비트 정수를 사용한다.
Address => IP Address
Socket Address => IP Address + Port
LocalHost.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class LocalHost { public static void main(String[] args) { try { InetAddress inetAddress = InetAddress.getLocalHost(); String hostName = inetAddress.getHostName(); String hostAddress = inetAddress.getHostAddress(); byte[] addresses = inetAddress.getAddress();
System.out.println(hostName); System.out.println(hostAddress);
for( int i = 0 ; i < addresses.length ; i++) { System.out.print( addresses[i] & 0x000000ff); if( i < 3 ) { System.out.print("."); } } } catch (UnknownHostException e) { e.printStackTrace(); } }
}
|
NSLookup기능을 구현해보자.
NSLookup.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class NSLookup { public static void main(String[] args) {
String host = ""; Scanner sc = new Scanner(System.in);
while (!(host.equals("exit"))) {
try { System.out.print(">"); host = sc.nextLine();
InetAddress[] inetAddresses = InetAddress.getAllByName(host);
for (InetAddress inetAddress : inetAddresses) { System.out.println(inetAddress.getHostAddress()); }
} catch (UnknownHostException e) { e.printStackTrace(); }
System.out.println(); } } }
|