2024-12-09 TIL
소켓 서버 만들기 전의 개념 정리
용어 | 설명 |
---|---|
handshaking(핸드셰이킹) | 두 개의 호스트가 서로 연결할 때 정보들을 주고 받는 이련의 과정(서버->클라이언트, 클라이언트->서버) |
3 way handshaking | 두 장치 간의 연결을 성립시키는 절차. |
4 way handshaking | 세션을 종료하기 위한 절차. |
3 way handshaking / 4 way handshaking
3 way로 연결을 설정하고 4 way로 해제한다.
3 way handshaking
클라이언트는 서버에 접속을 요청한다.
클라이언트로부터 syn 요청을 받은 서버는 클라이언트에 요청을 수락함.
클라이언트가 ACK를 보내면 연결이 이뤄짐.
4 way handshaking
클라이언트가 서버 종료 요청(FIN)을 보낸다.
서버가 클라이언트의 종료 요청을 받아들이고 ACK를 보낸다.
서버가 연결을 종료할 준비가 끝나면 FIN을 보낸다.
클라이언트가 FIN을 받으면 서버로 ACK를 보낸다.
핸드 셰이킹에 필요한 플래그(신호)
신호 | 기능 |
---|---|
SYN(Synchronize sqquence number) | 연결 시작 요청 |
ACK(Acknowledgement) | 응답 확인 |
FIN(Finish) | 연결 종료 |
웹 소켓
클라이언트와 서버 간의 양방향 통신을 위한 프로토콜(작동 방법). 기존의 HTTP 통신과 달리 한 번 연결되면 실시간으로 양쪽에서 자유롭게 데이터를 주고 받을 수 있다.
장점
양방향 통신 : 클라이언트와 서버 간에 언제든 데이터를 주고 받을 수 있다.
낮은 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리 시간, 메모리) : 연락 횟수가 적으므로 계속 연결을 줘야 하는 작업이 줄어 데이터나 시간을 아낄 수 있다.
연결이 유지된다(stateful) : http 연결 방식은 stateless(연결 유지가 안 된다)
브로드캐스팅으로 정보를 송신하기 때문에 다수에게 동일한 정보를 보내기 편하다.
TCP/IP
TCP(TRANSMISSION CONTROL PROTOCOL)
인터넷 상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
특징
서버 소켓은 연결만 담당함.
연결 과정에서 변환된 클라이언트 소켓은 데이터의 송수신에 사용됨.
서버와 클라이언트는 1대 1 연결이 된다.
데이터가 손실될 경우 재전송 요청을 하기에 브로드 캐스팅 방식에 비하면 스트리밍 서비스에 불리함.