19.1 네트워크 기초
19.1.1 네트워크
- 네트워크 : 여러 컴퓨터들을 통신 회선으로 연결한 것.
- LAN(Local Area Network) : 가정, 회사, 건물, 특정 영역에 존재하는 컴퓨터를 연결한 것.
- WAN(Wide Area Network) : LAN을 연결한 것 = 인터넷
19.1.2 서버와 클라이언트
- Server 서버 : 서비스를 제공하는 프로그램
- Client 클라이언트 : 서비스를 요청하는 프로그램
인터넷에서 프로그램이 통신하기 위해서는?
1) 클라이언트가 서비스를 요청
->
2)서버는 처리 결과를 응답으로 제공.
19.1.3 IP 주소
- IP 주소 : 네트워크 어댑터(LAN 카드) 마다 할당되는 컴퓨터의 고유한 주소
- ipconfig(윈도우) / ifconfig | grep inet(Mac OS) 명령어로 네트워크 어댑터에 어떤 IP 주소가 부여되어 있는지 확인
- 프로그램은 DNS(Domain Name System)를 이용해서 컴퓨터의 IP 주소를 검색.
19.1.4 Port 번호
- 운영체제가 관리하는 서버 프로그램의 연결 번호. 서버 시작 시 특정 Port 번호에 바인딩.

- 0~1023은 건드리지 말것..
- 1024~49151 많이 사용함
서비스별 특정 포트 번호가 있음.
http : 80
https : 443
tomcat : 8080
MySQL : 3306
Oracle : 1521
19.2 IP주소 얻기
19.2.1 InetAddress
▪ 자바는 IP 주소를 java.net 패키지의 InetAddress로 표현
▪ 로컬 컴퓨터의 InetAddress를 얻으려면 InetAddress.getLocalHost() 메소드를 호출
InetAddress ia = InetAddress.getLocalHost();
▪ getByName ( ) 메소드는 DNS에서 도메인 이름으로 등록된 단 하나의 IP 주소를 가져오고, getAllByName() 메소드는 등록된 모든 IP 주소를 배열로 가져옴
▪ InetAddress 객체에서 IP 주소를 얻으려면 getHostAddress () 메소드를 호출
String ip = InetAddress.getHostAddress();
19.3 TCP(Transmission Control Protocol) 네트워킹
19.3.1 TCP
- TCP는 연결형 프로토콜로, 상대방이 연결된 상태에서 데이터를 주고 받는 전송용 프로토콜이다.
- 클라이언트가 연결 요청을 하고 서버가 연결을 수락하면 통신 회선이 고정되고, 데이터는 고정 회선을 통해 전달. TCp는 보낸 데이터가 순서대로 전달되며 손실이 발생하지 않음.
- ServerSocket은 클라이언트의 연결을 수락하는 서버 쪽 클래스이고, Socket은 클라이언트에서 연결 요청할 때와 클라이언트와 서버 양쪽에서 데이터를 주고 받을 때 사용되는 클래스.

19.3.2 TCP 서버
19.3.3 TCP 클라이언트
19.3.4 입출력 스트림으로 데이터 주고받기
19.4 UDP(User Datagram Protocol) 네트워킹
19.
19.5 서버의 동시 요청 처리
19.
19.6 JSON 데이터 형식
19.
19.7 TCP 채팅 프로그램
19.