전체 글 153

섹션 6. HTTP 상태코드

자주 쓰이는 HTTP 상태코드 클라이언트가 보낸 요청의 상태를 응답에서 알려준다. 클라이언트가 인식할 수 없는 상태코드를 반환하게 된다면 클라이언트는 상위 상태코드로 해석하여 처리한다. ex - 299 > 2xx(Success) 1xx - 요청이 수신되어 처리중이라는 의미를 가지고 있다. 100 (Continue) - 클라이언트가 계속해서 요청하거나 이미 요청을 완료한 경우에는 무시해도 되는 응답 101 (Switching Protocol) - 클라이언트가 보낸 요청 헤더에 대한 응답에 들어가며 서버에서 프로토콜을 변경할 것을 알려준다. 102 (Processing) - 서버가 요청을 수신하여 처리중이지만 제대로된 응답을 줄 수 없음을 알려준다. 2xx - 클라이언트의 요청을 성공적으로 처리했다는 의미를..

네트워크와 CS 2022.02.20

섹션 7. HTTP 헤더1 - 일반 헤더

헤더는 크게 일반 헤더와 캐시/조건부 헤더 2가지로 나뉜다. 1. HTTP 헤더 용도 -> HTTP 전송에 필요한 모든 부가 정보 포함 -> ex) 메시지 바디의 내용 및 크기, 압축, 인증, 요청 클라이언트, 서버 등 2. 표준 헤더도 너무 많이 존재 3. 과거 HTTP 헤더 (RFC2616) -> 과거엔 header를 크게 4가지로 분류 General header: 메시지 전체에 적용되는 정보 Request header: 요청 정보 Response header: 응답 정보 Entity header: 엔티티 바디 정보 ex) Content-type: text/html, Content-Lenght: 3423 -> 메시지 본문은 엔티티 본문을 전달하는데 사용 -> 엔티티 헤더는 엔티티 본문의 데이터를 해석..

네트워크와 CS 2022.02.20

섹션 8. HTTP 헤더2 - 캐시와 조건부 요청

[1] 캐시 기본 동작 캐시가 없다고 가정하고 별 이미지를 요청해보자. 총 무려 1.1M의 데이터를 전송해야 함 !! 그러고 또 똑같은 별 이미지를 요청했을 때 서버는 과연 얼마짜리 데이터를 전송하게 될까? 서버는 캐시가 없기때문에 또 !!!! 1.1M(헤더+바디)의 데이터를 또 !!! 전송하게된다. 캐시를 사용하지 않으면 이렇게나 불편하다. 분명 같은 데이터를 요청하는데도 계속 네트워크를 통해 데이터를 다운받아야 한다. (네트워크는 매우 느리고 비싸다 ..) 다운로드 받는 시간 때문에 브라우저 로딩 속도가 느려지고 우린 화가 난다. 이제 캐시를 적용한 예제를 살펴보자. 이로 인해 네트워크를 불필요하게 사용하지 않아도 되며 브라우저 로딩 속도를 높일 수 있다. (우리 한 번 들어갔던 웹 브라우저는 굉장히..

네트워크와 CS 2022.02.20

면접 스터디 2주차 자바와 스프링 프레임워크

자바란 무엇일까? 객체지향프로그래밍(OOP: Object Oriented Programming) 언어이다. 자바의 장점은? - 그로인해 유지보수가 쉽고 직관적인 코드 분석이 가능하다. - 분산 네트워크 기술을 지원한다. -자바에는 TCP/IP 라이브러리가 기본적으로 포함되어있고, HTTP 프로토콜을 지원한다. -멀티쓰레딩을 지원한다. - 동일한 쓰레드를 동시에 수행할 수 있다. - 사용자 인터페이스 쓰레드와 장시간 계산이 필요한 쓰레드가 동시에 필요할 때 효과적이다. - 이식성이 높다. - 자바가상머신(JVM)에서 작동하기 때문에 운영체제 (ex. Window, Linux)의 종류에 상관없이 작동한다. - 자동 메모리 관리(Garbage Collecter) 사용하지 않는 객체는 자동으로 메모리에서 체크하..

스프링 MVC 정리본 1

1) Spring Annotation 어노테이션설명 @Controller 스프링 MVC의 컨트롤러 객체임을 명시하는 어노테이션 @RequestMapping 특정 URI에 매칭되는 클래스나 메소드임을 명시하는 어노테이션 @RequestParam request의 파라미터를 가져오는 기능을 하며 메소드내에 변수로 활용 @RequestHeader 요청(request)에서 특정 HTTP헤더 정보를 추출할 때 사용 @PathVariable 메소드 파라미터 앞에 사용하며 해당 URL에 { } 특정 파라미터를 변수로 활용 가능 @CookieValue 현재 사용자의 쿠키가 존재하는 경우 쿠키 이름을 이용해서 쿠키 값을 추출 @ModelAttribute view에서 전달해주는 파라미터를 클래스의 멤버변수로 binding ..

면접 스터디 1주차 JVM의 동작과 원리

자바 가상 머신(JVM)이란 무엇인가? 더보기 자바 가상 머신(JVM, Java Virtual Machine)이란 자바 바이트 코드를 실행시키기 위한 가상의 기계 자바 가상 머신의 구성 자바 가상 머신(JVM)은 다음과 같이 구성된다. 1. 자바 인터프리터(interpreter) 더보기 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할이다. 2. 클래스 로더(class loader) 더보기 자바는 동적으로 클래스를 읽어오므로, 프로그램이 실행 중인 런타임에서야 모든 코드가 자바 가상 머신과 연결되는데 이렇게 동적으로 클래스를 로딩해주는 역할이다. 3. JIT 컴파일러(Just-In-Time compiler) 더보기 JIT 컴파일러(Just-In-Time compiler)란 프로그램이 실..

Back-end Skill/JAVA 2022.02.09

HTTP에서 PORT란 무엇일까?

PORT는 배가 도착하는 항구라는 뜻이다. 친구랑 게임하면서 화상통화를 하고 있다고 가정해보자. 그렇다면 클라이언트가 한번에 여러개의 서버를 통신해야하지 않는가? 서버가 클라이언트에서 날라오는 패킷이 게임에 대한 패킷인지, 화상통화에 대한 패킷인지 웹브라우저에 대한 패킷인지 알 수 없지 않겠는가? 보낼 때도 마찬가지이다. 이걸 우리는 어떻게 구분해야할까? 위 그림과 같이 PORT 번호를 지정하여 PORT를 지정한다. 예를 들어 나는 100.100.100.1의 패킷의 10001PORT를 연결할거야! 이런 식으로 요청과 응답을 하는 방식이다. 클라이언트와 서바가 통신할 때 PORT는 햇갈리지 않기 위한 수단이다. PORT의 특징 - 0~ 65535 할당 가능 - 0 ~1023: 잘 알려진 포트, 사용하지 않..

네트워크와 CS 2022.02.07

IP의 한계를 해결해준다는 TCP. UDP 는 무엇일까?

인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 예를 들어보겠다. 내가 미국에 있는 친구에게 카카오톡 채팅프로그램 애플리케이션을 통해 Hello World! 라는 메시지를 보내려고 한다. SOCKET 라이브러리를 통해 전달할 때 OS계층에다가 메시지를 넘긴다. OS에서 Hello World라는 메시지에 TCP정보(녹색) 를 씌운다. IP계층에서 IP와 관련된 정보를 씌어서 IP패킷을 생성한다. 그래서 모든 정보가 마지막 인터넷 프레임을 씌어서 네트워크 인터페이스를 통해 서버로 전달된다. 여기서 잠깐! 패킷이라는 말은 무엇일까? pakage+buket의 합성어로 덩어리 ? 이런 느낌으로 이해하면 된다. POR..

네트워크와 CS 2022.02.07

IP (인터넷 프로토콜)은 무엇일까?

IP 주소 부여 클라이언트인 우리가 먼저 IP주소를 부여 받아야한다. 예를 들어 IP: 100.100.100.1 마찬가지로 받는 서버도 예를들어 IP: 200.200.200.2 IP 인터넷 프로토콜 역할은 무슨 역할을 하냐면 - 지정한 IP 주소 (IP Address)에 데이터 전달할 수 있도록 정해놓은 규칙 - 패킷(Packet)이라는 통신 단위로 데이터 전달 메시지를 그냥 보내는게 아니라 IP 패키지 규칙이라는게 있다. IP의 패킷 정보 출발지IP(현재나의 IP), 목적지IP(미국친구IP) 두개를 적고 IP패킷을 적은 다음에 적절하게 노드들이 규약에 맞게 인터넷망을 통해서 패킷에서 설정한 IP주소에 맞게 전달한다. 클라이언트 패킷 전달 클라이언트에서 서버까지 전달 서버 패킷 전달 노드들이 알아서 던져..

네트워크와 CS 2022.02.07