CS/컴퓨터 네트워크(11)
-
[네트워크] 웹 소켓(Web Socket)
웹 개발을 할 시, 서버와 클라이언트의 통신이 HTTP 프로토콜로 이루어지는 것은 맞다. 하지만, 채팅, 게임, 주식 차트 등의 실시간 통신이 필요한 서비스를 구현하고자 할 때 HTTP 프로토콜이 아닌 웹소켓 프로토콜이 더 좋다는 이야기를 접할 수 있다. 1. HTTP의 한계 HTTP는 사용자가 URL을 요청할 때에만 서버에서 해당 페이지를 꺼내주는 방식이다. 다시 말하자면, 사용자는 서버로부터 새로운 정보를 받기 위해서는, 반드시 URL 요청이 전제되어야 한다는 말과 동치이다. 2. AJAX의 등장 AJAX는 HTTP 규약을 뛰어넘는 방안으로써, AJAX는 프로토콜이 아닌 HTTP를 효과적으로 이용하는 기술이다. 만약, 기존의 HTTP 방식으로 클라이언트가 서버에 요청을 보낸다고 가정하자. 요청 페이지..
2022.08.17 -
[네트워크] SSL(Secure Socket Layer) 동작 원리
대칭키와 공개키 SSL의 동작 원리에 대해 알기 위해서는 먼저 암호화 알고리즘의 종류인 대칭키와 공개키에 대해 알 필요가 있다. 대칭키(Symmetric Key) 암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘 장점 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여 시스템 개발 환경에 용이하고 비대칭키(공개키)에 비해 암호화와 복호화 속도가 빠르다. 단점 교환 당사자 간에 동일한 키를 공유해야 하기 때문에 키 관리에 어려움이 있음 잦은 키 변경이 있는 경우에 불편하다. 디지털 서명 기법에 적용이 곤란하고 안전성을 분석하기 어려우며 중재자가 필요하다. 공개키(Public Key) 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화..
2022.08.17 -
[네트워크] HTTP와 HTTPS
HTTP(Hyper Text Transfer Protocol) 서버/클라이언트 모델에 따라 데이터를 주고받기 위한 프로토콜 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로써, 80번 포트를 사용하고 있다. HTTP 서버와 통신하고자 할 때에는 HTTP 클라이언트가 80번 포트로 요청을 보내야 한다. 암호화되지 않은 평문 데이터를 전송하는 프로토콜 → 보안이 필요한 정보를 주고받기에 적절하지 않다는 단점 → HTTPS의 등장으로 이어짐 TCP/IP 위에서 동작하는 프로토콜이다. Connectionless의 특징을 가지며, 서버가 요청에 응답을 마치면 연결을 끊어버린다. Stateless로 이전 통신에 대한 정보를 기억하지 않는다. HTTPS(Hyepr Text Transfer Protocol over..
2022.08.17 -
[네트워크] IP fragmentation, reassembly
IP 단편화(fragmentation) network links는 MTU(Max Transfer Size)를 가진다. 링크 계층 프로토콜마다 다른 링크 타입과 MTU를 가지므로 네트워크는 큰 IP datagram을 분할할 필요성이 있다. 이러한 IP datagram을 여러 조각의 datagram으로 쪼개서 전송하고 최종 목적지에서 재결합(reassembly) 된다. IP 헤더를 통해 본래 하나의 datagram이었는지 구분하고 순서를 확인하게 된다. 4000byte datagram을 3개의 datagram으로 쪼개서 전송했다고 하자. 각 datagram은 헤더가 20byte씩을 차지한다. 즉 처음 datagram도 헤더가 20byte를 차지하므로 data field는 3980이다. 또한 MTU는 1500..
2022.06.27 -
[네트워크] DNS
등장 배경 네트워크 안에서 호스트를 식별하기 위한 목적으로 IP 주소를 사용하는데, 사람의 경우 숫자보다 문자를 사용하는 것이 더 편하므로 도메인 이름을 이용해 호스트를 식별한다. 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알고 있어야 상대방과 연결이 가능하므로, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스인 DNS가 등장했다. DNS란? 정의 TCP/IP 네트워크 상에서 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꾸는 서버를 DNS라고 한다. 포트 번호 UDP와 TCP 모두 53번 포트를 사용한다. DNS 서버에 질의를 보낼 때 UDP를 사용하고, Zone Transfer (영역 전송)과 512 B..
2022.06.26 -
[네트워크] TCP 혼잡제어(congestion control)| AIMD, Slow Start | TCP Reno, Tahoe
TCP 혼잡 제어란? 혼잡(congetion)하다는 것은 너무 많은 source가 너무 많은 data를 너무 빨리 전송해 네트워크가 이를 처리하지 못하는 상태를 말한다. 조금 더 자세히 설명하자면 데이터의 양이 수신 측에서 처리할 수 있는 양을 초과하게 되면 송신 측에서는 수신 측에서 처리하지 못한 데이터를 손실 데이터로 간주하고 계속 재전송하게 되므로 네트워크가 더욱더 혼잡하게 된다. 이러한 혼잡 상태를 제어하는 것을 혼잡 제어라고 한다. TCP 혼잡 제어의 여러 가지 방법을 알아볼 것인데, 그전에 TCP에 대해 잘 모르겠다면 다음 포스팅을 참고하자. [네트워크] TCP란? | TCP의 특징 | TCP RDT | 3-way handshake TCP란? TCP(Transmission Control Pro..
2022.06.26