티스토리 뷰
Done
- 자바의 정석 16. 네트워킹 일부 https://bong-f.tistory.com/154?category=995830
- 자바의 정석 8. 예외처리 https://bong-f.tistory.com/155
- 김영한님 인프런 http 강의
Learned
출처
생활코딩1
생활코딩2
생활코딩3
생활코딩4)
생활코딩5 - 캐쉬)
생활코딩6 - ip)
대부분의 출처는 김영한님의 강의며 저작권과 내 이해의 한계로 이해한 바만 서술했다. ( 빠트린 내용 디테일한 내용은 적지 않음)
인터넷
- 컴퓨터와 컴퓨터가 연결 되어 있는 상태
- 인터넷은 웹 서비스가 아니다.
웹
- 컴퓨터와 컴퓨터가 주고 받을 수 있는 서비스 중 하나 (메일 서비스, 여러 서비스들 중 하나)
- 주요 목적 홈페이지를(html)을 주고 받기 위해
웹 클라이언트(웹 브라우저)와 웹 서버
- 웹 클라이언트(웹 브라우저) :데이터 요청 주체
- 웹 서비스 : 데이터 제공 주체
- 둘 사이에 requet & response
- 둘 사이가 한 line으로 연결 되는 것이 아니라 수많은 노드를 거쳐서 연결 된다
HTTP
- Hyper Text Transfer Protocol
- requewt와 response를 하려면 일정한 규약이 필요하잖아. 그 규약
IP 인터넷 프로토콜
- 패킷이라는 통신 단위로 데이터 전달
- 패킷 안에 출발지, 목적지 기타 정보 + 전송 데이터 있다
- ip 프로토콜 한계 : 패킷 받을 대상에 문제가 있어도 패킷 전송되거나 중간에 패킷 소실 되거나 순서 바뀌는 또 한 아이피 안에 여러 프로그램이 시작되면 구분이 안돼 > TCP, UDP
IP 주소
- ip 주소 : 통신을 위해 각자가 갖는 주소
- 모든 운영체제에는 hosts라는 파일이 있고 그 파일에 ~도메인의 ip 주소 적어두면, 도메인 접속하면 해당 ip주소로 접근
- 과거에는 신뢰할 수 기관에서 관리
- host 파일 해킹 되면 난 네이버에 접속했는데 이상한 사이트에 가게 된다
도메인
- IP 기억하기 어려우니까 도메인으로
DNS
- 도메인 주소 치면 1. host 파일 찾아봐 없으면 2. dns 서버에서 ip받는
- 도메인 - ip 전화번호부 책 같은
TCP, UDP
- 전달하려는 데이터 > 소켓 라이브러리통해 전달 > TCP 정보 생성 (or UDT) > IP 패킷 생성 > 랜카드 > 서버
: TCP 껍질, IP껍질 감싸는 식- IP 패킷 : 출발지, 목적지 IP
- TCP 부분 : 출발지 PORT, 목적지PROT, 전송 순서, 검증 정보등
- TCP는 SYN-ACK&SYN-ACK로 서로 연결 확인 후에 데이터 보내기 때문에 연결 안정 (연결 지향)
- TCP 데이터 전달 보증
- TCP 순서보장
- UDP는 IP와 거의 같지만 PORT와 체크섬?(#TODO) 정도만, 대신 필요한 것만 골라 확장 가능성
PORT
- 동일 아이피에 여러 프로그램 실행 될 때 그를구분해주기 위해서 ( IP가 아파트라 하면 동호수 같은 것)
URI, URL, URN
- URL이 URL과 URN을 포괄한다 이름기반 URN은 쓰지 않아 거의 URL, URI
- https://www.google.com/search?q=hello&oq=hello...
- http : 프로토콜 : 어떤 방식으로 자원에 접근할 것인가. 각 프로토콜 마다 자주 사용하는 포트 있어 생략가능
- https 는 http 보다 보안에 강함
- www.google.com = 호스트 :443 같이 포트명을 붙이기도 함
- / 리소스 경로
- ?q=hello 쿼리. (키 벨류 형태 키 = 벨류 )
- 프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조 의 형태 < 출처 : 자바의 정석>
- 프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통식규약 http
- 호스트명 : 자원 제공하는 서버 이름
- 프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조 의 형태 < 출처 : 자바의 정석>
- https 는 http 보다 보안에 강함
- http : 프로토콜 : 어떤 방식으로 자원에 접근할 것인가. 각 프로토콜 마다 자주 사용하는 포트 있어 생략가능
http 특징
- 무상태 프로토콜
- stateful : 상태 유지, 서버가 클리아언트 상태 정보 갖고 있어
- stateless : 무상태, 갖고 있지 않아 클라이언트가 자기 정보 갖고 줘야돼 > 무한 서버 증설 가능
- 일반적으로 상태 유지는 최소한만 하고 쿠키 등 활용해서 서버유지
- 비연결성
- 한 번 응답 완료되면 끊어버려
- tcp는 그럼 다시 연결 확인 부터 해야 하고...
- 한 번 응답 완료되면 끊어버려
http 메시지 구조
- start line - header - empthy line - message body
.. 그 뒤 실무적인 내용은 강의만 들엇다 나중에 쓸 일이 있겟지
http 메시지
실습
InetAdderess 클래스
- getAddress
- getAddress와 getHostAddress 차이 : 만약 대상을 똑같이 설정하고 둘의 메서드 적용했을 때 차이?
: 전자는 byte로 반환 후자는 222.122.84.200 으로 사람이 읽는 방식으로 반환 https://stackoverflow.com/questions/53854499/whats-the-difference-between-inetaddress-getlocalhost-gethostaddress-and-in - getAddress, getByName, getHostAddress, getLocalHost, getHostName, getAllByName(한 도메인에 여러 아이피)
- getAddress와 getHostAddress 차이 : 만약 대상을 똑같이 설정하고 둘의 메서드 적용했을 때 차이?
URL 클래스
프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조 의 형태
- 프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통식규약 http
- 호스트명 : 자원 제공하는 서버 이름
- Url 객체 생성 방법 https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html
- URL myURL = new URL("http://example.com/");
- URL gamelan = new URL("http", "example.com", 80, "pages/page1.html");
- 상대경로로 생성 :
URL myURL = new URL("http://example.com/pages/");
URL page1URL = new URL(myURL, "page1.html");
URL page2URL = new URL(myURL, "page2.html"); - getAutority : 호스트명과 포트번호
- get.. 다양한 것들
- toExternalForm : URL을 문자열로 변환하여 반환
- toURI : URI로 반환
URLConnection 클래스
- 연결하고자 하는 자원에 접근하고 읽기 쓰기를 할 수 있다.TCP 소켓 프로그래밍
- 프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통식규약 http
서버소켓 : 전화교환원 (중간 매개 역할) : 클라이언트 연결 요청 받으면 서버에 새로운 소켓 생성해서 클라이언트의 소켓과 연결되록 한다
최종 결과 ; 원격 소켓 - 새로운 서버 소켓 (일대일)
원래 여러 개의 소켓이 하나의 포트 공유해서 사용할 수 있지만 서버소켓은 한 포트당 하나. 독점.
포트는 1023번 이상으로 사용되지 않는 것으로
serverSocket.accept(); 소켓서버 만들고 소켓서버에 accept 호출시 프로그램은 실행을 멈추가 클라이언트가 여기로 연결될 때까지 무한대기. 클라이언트 연견되면 Socket 객체 반환
읽을자료
https://yoonemong.tistory.com/223
김영한님 강의에서 얻었던 키워드
- 캐싱, 왜하는지, 여러 조건들 / 시간초과 / 검증헤더 / 조건부요청 / 날짜기반, 이름기반(해시) / 프록시 캐시
- uri는 동사가 아님 리소스를 중심으로 ( 동사는 get, post, 등이 대신 )
- get : 쿼리로 데이터 전달 (검색시)
- post vs put : put은 클라이언트가 해당 리소스 위치를 알고 지정한다.
- 멱등 : 여러번해도 결과가 똑같음 ( 대표 get, delete)
- 상태코드
- 100번대 :요청 처리중
- 200 번대 : 요청 정상 처리
- 300번대 : 요청 완료하려면 추가행동 필요 (리다이렉트)
- 400번대 : 클라이언트 오류
- 500번대 : 서버오류
- 표현 헤더, 표현 데이터
- content type, contetencoding, content language, content length
- 콘텐츠 네고시에션 ( 최대한 맞춰줌 반드시는 아님)
- 쿠키
자바의 정석 - 예외
- 프로그램 오류는 = 컴파일 에러, 런타임에러, 논리적에러(동작이상)
- 에러(큼) vs 예외(수습가능)
- exception과 error도 object의자손
- 런타임에러 - 익셉션(예외) 부분은 사용자&외부변수로 인한 Exception 클래스와 자손 / 프로그래머 잘못으로 인한 RuntimeException으로 나눌 수 있
- 예외 처리는 try catch / 부모한테 던지는 것 throws(처리 x) >> 올라올라 가면 jvm 하기도.. / 예외 되던지기.. 분산처리 느낌
- 관련메서드 printStackTrace , get Message
- 멀티 캐치 블럭 : 두 캐치 블럭을 합친 것 ( 부모-자식 관계 합칠 수 없고(그냥 부모 써줘. 어차피 형변환 가능성 보고 예외가 들어가니까), 공통 멤버만 사용 가능. 한 쪽에만 잇으면 다른 쪽 에외로 걸려들어온 애 어쩔 줄 몰라)
- checked 필수 예외처리 / unchecked 선택예외처리 runtime익세셥 쪽..
- finally 트라이에 걸리든 예외 발생해서 캐치에 걸리든 어쨌든 둘 다 해야 하는 경우
- 연결된 예외 (포함관계로 만들어서 .. 체크드 예외를 언체크드로 바꿔주거나 / 좀더 개괄 설명 > 세부 설명으로 예외 작성할 수 있게 더 큰개념으로 감싸주든지)
Bad
- 구현보다 이론공부에 힘썼다.
Good
- 목표한 자바의 정석은 열심히 하고 있다
Feeling
- 어디로 가야하죠 아저씨
- 내일 알고리즘을 쉰다고 해서 기쁘다.과연 나는 밀린 일들을 내일 알차게 할 수 있을까
'기타 > TIL' 카테고리의 다른 글
210204 목 TIL (0) | 2021.02.04 |
---|---|
210203 수 TIL (0) | 2021.02.03 |
210201 월 TIL (0) | 2021.02.01 |
210129 금 TIL (0) | 2021.01.29 |
210127 수 TIL (0) | 2021.01.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Queue
- 백준
- 힙
- Stack
- Gitignore
- thread
- 프로그래멋lev2
- 프로그래머스lev1
- FLASK
- 우선순위큐
- spring-boot-qna
- 동빈북
- Sort
- Stream
- JdbcTemplate
- 순열조합
- arraylist
- 프로그래머스lev3
- SQL코딩테스트
- 그래프이론
- 예외
- 최단경로
- 프로그래머스lev2
- array
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함