Network

URLSessionWebSocketTask

JoonSwift 2022. 1. 17. 14:47

URLSessionWebSocketTask는 URLSessionTask의 서브클래스로, TCP와 TLS를 통해 WebSocket의 형태로 이루어지는 message-oriented 트랜스포트 프로토콜을 제공하고 있습니다. 그리고 RFC 6455에 정의된 WebSocket Protocol을 따릅니다.

TCP? (Transmission Control Protocol)
TCP는 인터넷 프로토콜의 주요 프로토콜 중 하나로, 신뢰적 데이터 전송을 위해 오류 검출, 재전송, 누적 확인 응답, 타이머, 순서 번호와 확인 응답 번호를 제공합니다. TCP는 또한 연결지향형으로 클라이언트와 서버 사이에 데이터가 오가기 위해서는 사전에 연결을 성사시켜놓아야 합니다. 
TLS? (Transport Layer Security)
TLS는 이제는 잘 사용하지 않는 SSL의 후계자로 암호 프로토콜(cryptographic protocol)으로 컴퓨터 네트워크의 통신 보안을 제공합니다. email, instant messaging, VOIP등에 널리 쓰이고 있으며, 가장 눈에 띄게 확인할 수 있는 HTTPS가 가장 대표적입니다. 

ws: 또는 wss: URL을 사용하여 URLSessionWebSocketTask를 생성할 수 있습니다. 또한, task를 생성할 때, handshake 단계에 알릴 프로토콜들의 목록을 제공할 수 있습니다. 

handshake가 완료되면, 앱이 session의 delegate를 통해 알려줍니다. (여기서 delegate는 URLSessionDelegate!)

task는 읽고 쓰기를 비동기적으로 수행하며, 바이너리 형식과 UTF-8로 인코딩된 텍스트 형식을 보내고 받을 수 있게 해줍니다. 또한 task는 handshake가 완료되기 전에 수행한 읽기 또는 쓰기를 대기열에 넣고 handshake가 완료된 후에 실행해줍니다. 

URLSessionWebSocketTask는 redirection과 인증 기능을 지원하고 이는 URLSessionTaskDelegate를 통해 사용 가능합니다. WebSocketTask는 쿠키도 지원합니다. httpCookieStorage에 쿠키를 저장할 수 있고, 송신 HTTP handshake 요청에 쿠키를 첨부할 수도 있습니다. 

 

 

Practice

https://github.com/elddy0948/Play/tree/main/URLSessionWebSocketTask_Practice

 

참고 문헌

https://developer.apple.com/documentation/foundation/urlsessionwebsockettask

 

Apple Developer Documentation

 

developer.apple.com

https://en.wikipedia.org/wiki/Transmission_Control_Protocol

 

Transmission Control Protocol - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Principal protocol used to stream data across an IP network The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the in

en.wikipedia.org

https://en.wikipedia.org/wiki/Transport_Layer_Security

 

Transport Layer Security - Wikipedia

 

en.wikipedia.org

 

'Network' 카테고리의 다른 글

Application Layer가 뭘까?  (0) 2022.01.25