8. 네트워크와 소켓의 이해

네트워크란?

“유/무선 으로 연결되어 있는 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.java
1
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(); //byte배열로 ip 받아오는 함수

System.out.println(hostName); //컴퓨터이름
System.out.println(hostAddress); //ipconfig의 결과와 같음

for( int i = 0 ; i < addresses.length ; i++) {
System.out.print( addresses[i] & 0x000000ff);
//MSB로 인해 음수가 나와 마스킹을 해주는것.
if( i < 3 ) {
System.out.print(".");
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}

}

NSLookup기능을 구현해보자.

NSLookup.java
1
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();
}
}
}

Share