본문 바로가기

네트워크

(7)
Handshake failed due to invalid Upgrade header: null 문제상황 SSAFY 자율 프로젝트에서 채팅 기능을 구현하는데 잘 동작하던 기능이 HTTPS를 적용하고 나서는 콘솔에 아래와 같은 에러가 발생하면서 채팅방에서 소켓연결이 실패했었습니다. 백엔드단에서도 로그를 확인해 보니 동일한 에러가 발생했습니다. (개발할 때 에러메세지를 캡처하지 못해서 문제를 해결할 때 참고했던 블로그의 사진을 인용하였습니다.) "Handshake failed due to invalid Upgrade header: null" 내 기존 location 들 , 아래를 추가 velog.io 해결방법 Websocket 프로토콜은 서버와 클라이언트 간의 메세지 교환을 위한 통신 프로토콜로 양방향 통신을 지원하며 실시간 네트워크를 구현하는데 주로 사용됩니다. HTTP 프록시 및 중간 층을 지원하..
OSI 7계층, TCP/IP 4계층 OSI 7계층(물-데-네-전-세-표-응) OSI 7계층은 네트워크 통신이 일어나는 전과정을 7개의 단계로 표준화 한 것입니다. 이렇게 표준화 함으로써 통신이 일어나는 과정을 단계별로 파악할 수 있어, 문제가 발생했을 때 해당 문제를 해결하기 용이해집니다. 각 계층은 물리 계층 - 데이터링크 계층 - 네트워크 계층 - 전송 계층 - 세션 계층 - 표현(프레젠테이션) 계층 - 응용(애플리케이션) 계층 순으로 나뉘며 물리 계층부터 네트워크 계층까지를 하위 계층, 전송 계층부터 응용 계층까지를 상위 계층이라고 합니다. 하위 계층 : 물리 계층 - 데이터 링크 계층 - 네트워크 계층 상위 계층 : 전송 계층 - 세션 계층 - 표현 계층 - 응용 계층 물리 계층 물리 계층은 전송에 필요한 두 물리적 장치 간의 기계..
[HTTP] HTTP, HTTPS, SSL Handshake HTTP HTTP는 HyperText Transfer Protocol의 약어로 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜입니다. 즉 클라이언트와 서버 사이에서 데이터를 주고 받을 수 있도록 정해진 규칙이며 HTML 문서와 같은 리소스들을 가져올 수 있도록 도와줍니다. HTTP 특징 클라이언트 서버 구조 무상태 프로토콜(stateless) 비연결성(connectionless) HTTP 메시지 단순함 확장가능 클라이언트 서버 구조 HTTP는 클라이언트 서버 구조로 되어있는데 클라이언트가 서버에 요청을 보내면 서버에서 요청에 대한 결과를 만들어서 응답해 줄 때까지 대기하는 구조입니다. 이렇게 클라이언트와 서버로 나누어져 있을 때 장점은 서비스 로직이나 데이터를 다루..
[HTTP] TCP와 UDP의 특징 (TCP 3-way, 4-way handshake) TCP(Transmission Control Protocol) TCP(Transmission Control Protocol)는 직역하면 전송 제어 프로토콜이라는 뜻으로 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다. 데이터는 IP(Internet Protocol)을 통해 데이터를 여러 개의 조각들로 나눈 패킷(Packet)이라는 통신 단위로 나뉘어 전송되는데 IP(Internet Protocol)만으로는 다음과 같은 한계가 있습니다. 비연결성 대상 서버가 패킷을 받을 수 있는 상태인지 아닌지 모르기 때문에 패킷을 받을 대상이 없거나 서비스가 불능 상태여도 패킷이 전송됩니다. 비신뢰성 데이터는 인터넷 망에 존재하는 여러 서버(노드)들을 거쳐 대상 서버로 전달 되는데 ..
[HTTP] 쿠키와 세션 개요 HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신합니다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹 페이지에서는 알 수 없습니다. 따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결 기능, 즉 세션 트래킹을 이용해야 합니다. 웹 페이지를 연동하는 방법은 다음과 같습니다. 태그 : HTML의 태그를 이용해 웹 페이지들 사이의 정보를 공유합니다. URL Rewriting : GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송합니다. 쿠키 : 클라이언트 PC의 Cookie 파일에 정보를 저장한 후 웹 페이지들이 공유합니다. 세션 : 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유합니다. 이..
[HTTP] 웹 통신 흐름 웹 브라우저에 11st.co.kr 를 입력 했을 때 어떤 일이 일어날까? IP 주소란? IP 주소란 쉽게 말해서 서버에 접근하기 위해 필요한 주소로 0.0.0.0부터 255.255.255.255로 이루어진 최대 12자리 숫자인데 서버에 접근 하기 위해 이 주소를 외우고 다니는 것은 쉬운 일이 아니다. 그래서 필요한것이 DNS이다. DNS 란? DNS란 Domain Name System을 지칭 하는 약어로 외우기 힘든 IP 주소를 비교적 외우기 쉬운 도메인 네임으로 변환해 주거나 반대의 변환을 수행해 주는 시스템이다. 웹 브라우저에 11st.co.kr를 입력 했을 때 일어나는 일 웹 브라우저에서 도메인 네임(11st.co.kr)을 입력한다. (1) DNS 서버에서 브라우저가 입력한 URL에 포함된 도메인 ..
[HTTP] 세션과 토큰 실전 프로젝트에서 Jwt 토큰을 이용한 소셜 로그인 기능을 맡아서 구현하게 되었는데 예전부터 꼭 한번 다뤄보고 싶은 부분이었어서 아직 많이 부족하지만 이번에 한번 글을 써보려고 합니다. 로그인 기능을 어떻게 구현을 했는지 설명하기 전에 먼저 세션과 토큰의 차이점을 알아보고 왜 토큰을 사용하여 로그인 기능을 구현했는지 알아 보겠습니다. 세션과 토큰 먼저 http는 상태를 저장하지 않습니다. 이를 Stateless하다고 표현하는데 이러한 http의 특성은 서버의 수평적인 확장을 가능하게 하여 서버를 증설할 때 유리하게 작용합니다. 하지만 그렇다고 모든 기능을 Stateless하게 설계할 수는 없는데 예를 들어 로그인한 유저의 정보를 가져오기 위해서 상태유지가 꼭 필요한 로그인 기능이 대표적입니다. 그래서 일..