- 학습 목표 달성 확인 목록
- [] connection-oriented와 connectionless 통신 방법의 차이점을 이해하는가?
connection-oriented(연결지향):1:1로 연결 상태를 유지하여 통신하는 것을 말한다.
connectionless(비연결성):연결 상태를 유지하는 것이 아니라 주소를 가지고 다음 라우터나 목적지로 전달만 하여
데이터그램에 대해 관여하지 않는다
- [] ServerSocket/Socket 과 DatagramSocket/DatagramPacket 클래스의 사용법을 아는가?
%[https://gist.github.com/osk2090/dcea6e5c9197a1208861f166360f3da2]
- [] HTTP 프로토콜의 통신 방법을 이해하는가?
클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜이다
예를 들면 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로 부터 웹페이지나 그림 정보를 요청하면
서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다
이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다
- [] HTTP 클라이언트와 HTTP 서버를 간단히 구현할 수 있는가?
%[https://gist.github.com/osk2090/b3669b9573194ce27518fe134630d915]
- [] URL 클래스를 사용하여 URL 주소의 각 요소를 식별할 수 있는가?
public static void main(String[] args) throws Exception {
// 웹 상에서 자원의 위치를 표현하는 방법
// => [프로토콜]://서버주소:포트번호/자원의경로?파라미터명=값&파라미터명=값
// - 프로토콜: http(80), https(443), ftp(21/20) 등
// - 서버주소: IP 주소(192.168.0.1), 도메인명(www.bitcamp.co.kr)
// - 포트번호: 80(생략할 수 있다), 8080(프록시 서버) 등
// - 자원의경로: /index.html, /board/list.jsp 등
// - 서버에 보내는 파라미터(Query String): 파라미터명=값&파라미터명=값
//
// 자원
// - 정적 자원(static)
// - 요청할 때 마다 결과 콘텐트가 변경되지 않는 자원. 즉 파일을 가리킨다.
// - 예) HTML, GIF, JPEG, PNG, CSS, JavaScript, TXT 등의 파일
// - 동적 자원(dynamic)
// - 요청할 때 마다 결과 콘텐트가 변할 수 있는 자원.
// - 메일 조회, 게시물 변경, 주문 등의 웹 프로그램을 가리킨다.
// - 예) index.php, index.jsp 등
//
URL url = new URL("https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=bitcamp");
// URL 분석
System.out.printf("프로토콜: %s\n", url.getProtocol());
System.out.printf("서버주소: %s\n", url.getHost());
System.out.printf("포트번호: %d\n", url.getPort()); // 지정하지 않으면 -1 리턴. 실제 접속할 때는 기본 포트번호 사용.
System.out.printf("자원경로: %s\n", url.getPath());
System.out.printf("서버에 보내는 파라미터: %s\n", url.getQuery());
}
- [] URL, URLConnection 클래스를 이용하여 HTTP 요청을 구현할 수 있는가?
- [] 계산기 서비스를 stateful 통신 방식과 stateless 통신 방식으로 모두 구현할 수 있는가?
- [] 스레드를 이용하여 여러 클라이언트를 동시에 처리할 수 있는가?