Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- terraform 문법
- 컨테이너
- 도커
- docker
- Shell
- 테라폼 기본 문법
- AWS
- Django
- zsh
- python
- terraform
- iterm2 shortcuts
- server
- nosql
- minikube mac 설치
- 빅오노테이션
- 파이썬
- iterm2 단축키
- 도커컴포즈
- zshrc
- minikube 설치 방법
- BIG-O NOTATION
- docker-compose
- sftp란
- Bash
- linux
- 테라폼 문법
- DynamoDB
- customize
- test
Archives
- Today
- Total
sklass의 s-class 프로그래밍 blog
Socket & Session 본문
Session
- 세션(Session) 이란 서버와 클라이언트간의 논리적 연결(Logical Connectivity)로, 쿠키와 같이 클라이언트의 정보를 웹브라우저가 아닌 웹서버에 저장하는 형태입니다. Django에서는 session의 저장형태를 추가적으로 설정하지 않는 이상, cookie(쿠키)에 그 값이 저장됩니다.
- 세션 ID를 웹사이트에 접속시 최초로 발급해주며, 클라이언트는 해당 세션ID를 쿠키를 사용해서 저장합니다. 클라이언트가 재접속시, 데이터 패킷(메시지)에 세션이 발급해준 쿠키를 이용하여 세션 ID값을 서버에 전송합니다.
- 세션의 유지 시간은 Django를 기준으로 기본 값 2주이며, 2주 이상 서버에 아무런 요청을 하지 않으면 세션이 자동으로 끊깁니다. 이것을 Session Timeout이라고 합니다.
- 서버에 클라이언트의 상태정보를 저장하기에 보안성이 높지만, 너무 많은 상태정보를 저장하게되면 서버에 부하가 커집니다.
Socket (TCP Socket)
- 소켓(Socket)은 서버와 클라이언트간의 물리적 연결 (Physical Connectivity)로, 웹 브라우저 프로그램 안의 쓰레드(Thread)가 클라이언트 소켓을 만들어 서버 소켓에 연결하는 것을 말합니다.
- 클라이언트 소켓과 서버 소켓이 연결되면 데이터 패킷을 주고 받게되는데, 클라이언트가 지속적으로 무엇인가 요청을 할때마다 쓰레드가 생성되어 소켓의 연결 및 종료를 반복해야하는 문제가 발생합니다.
- 이러한 문제를 해결하고자 HTTP/1.1 에서는 연속된 요청과 응답을 위하여 소켓을 재사용할 수 있게 하였고, 이를 keep-alive라고 합니다.
- 양방향통신으로 계속 연결을 유지하는 연결지향형 통신이라 채팅이나 거래소 가격정보와 같은 실시간통신 및 트래픽이 많은 네트워크에 유리합니다.
WebSocket
- WebSocket은 HTML5 표준의 일부로 클라이언트에서 서버로의 단방향 통신의 한계를 벗어나 실시간 양방향으로 상호작용하는 웹서비스를 만드는 표준 기술입니다. HTTP와는 다르다.
- WebSocket이 등장하기 이전에는 HTTP의 특성상 연결이 유지되지 않기 때문에 실시간은 아니지만 실시간 처럼 보이게하는 Polling, Long Polling(COMET), Streaming 방식의 AJAX코드를 이용하여 이를 구현했지만, 이 방법들을 사용하면 각 브라우저마다 구현 방법이 달라 개발비용이 커집니다.
- 웹 소켓은 TCP 80포트를 사용하면서 HTTP프로토콜과 호환되며, 웹 브라우저와 서버 간 통신을 가능하게 해줍니다.
- 웹 소켓의 프로토콜 표시는 WS(WebSocket)과 WSS(WebSocketSecure)이 있습니다.
- TCP 소켓과 다른점으로는 WebSocket은 http 레이어, 즉 OSI 7계층에서 가장 상위 레이어인 Application Layer에 해당하는 반면 TCP 소켓은 OSI 7계층에서 4계층인 Transport Layer에 해당한다는 것입니다.
- 하지만 Websocket 통신 또한 4계층, 전송계층의 TCP/IP 방식으로 이루어지기 때문에 TCP 소켓과 크게 다르다고 구분할 수 없습니다. 단지 TCP/IP 통신을 하며 activeX와 같은 짜증나는 플러그인들을 이용하지 않을 수 있어서 WebSocket을 TCP 소켓보다 선호합니다.
'network' 카테고리의 다른 글
[SSH] known_hosts와 authorized_keys (0) | 2021.12.05 |
---|---|
Forward Proxy와 Reverse Proxy (0) | 2021.11.14 |
SSH (Secure Shell) (0) | 2021.11.07 |
IP 주소 & 서브넷 마스크(Subnet Mask) 정리 (0) | 2021.10.31 |
Web, Web Server, Web Application Server(WAS) (0) | 2021.09.26 |