반응형
SMALL

Computer Science/컴퓨터네트워크(ComNet) 31

[컴네/CN] 비동기 프로그래밍

Blocking vs. Non-blocking Blocking 프로세스가 시스템을 호출하고 나서 결과가 반환되기까지 다음 처리로 넘어가지 않는 상태. 즉, block이 된 상태를 말한다. Non-blocking 시스템을 호출한 직후에 프로그램으로 제어가 돌아와 시스템 호출의 종료를 기다리지 않고 다음 처리로 넘어갈 수 있다. I/O(입출력)가 길어지는 경우 블로킹이면 대기시간이 길어지기 떄문에 논블로킹 사용한다. 좌측 코드는 서버, 우측 코드는 클라이언트의 코드이다. 서버 코드에서는 소켓을 바인딩하고, while문을 통해 accept(연결)를 기다린 후 데이터를 수신한다. 클라이언트 코드에서는 ip 주소와 포트번호를 설정하여 연결을 생성하고 "HelloWorld\n"라는 문자열을 300 * 1024 * ..

[컴네/CN] 신뢰성 있는 프로토콜

인터넷 프로토콜에는 두 가지의 종류가 있다. TCP/IP 표준과 OSI 표준 두 가지가 존재하는데, TCP/IP 표준에서 응용계층이 Application, Presentation, Session 세 가지의 계층으로 나뉜 것이 OSI 표준이다. 전송 계층 전송계층은 TCP 또는 UDP 연결을 하는 단계이다. TCP TCP 연결은 아래 네 가지 기능을 제공한다. - 신뢰성: 오류 발생 시 탐지 및 복구, 파일을 순서대로, 중복을 제거하여 전송 - 흐름제어: 수신자의 상태에 따른 전송량 조절 - 혼잡제어: 네트워크 + 수신자의 혼잡 상태(Buffer에 패킷이 많은 경우)에 따른 전송량 조절 - 연결 관리: TCP 연결을 관리함. UDP UDP는 어떠한 기능도 제공하지 않는다. TCP에서 기본적으로 제공하는 기..

[컴네/CN] 응용계층 프로토콜: FTP, SMTP

응용 계층 프로토콜 응용 게층 프로토콜은 여러 가지가 존재한다. - ftp: 파일을 전송 프로토콜 - smtp: 이메일 전송 프로토콜 - sip: 화상 회의 시 사용하는 프로토콜 - pop3: 이메일을 다운 받는 프로토콜 - imap: 이메일을 전송하는 프로토콜 - snmp: 망 관리 프로토콜 FTP 응용계층 프로토콜로 인터넷 초창기에 파일&메일을 교환하는 목적으로 사용하였기 때문에 파일을 전송할 때 자주 사용한 프로토콜이다. 하지만 최근 UI가 웹으로 바뀌면서 파일 전송도 HTTP를 통해 진행된다. SMTP, POP3/IMAP 메일을 전송하는 프로토콜이다. 이메일 서버에 전송할 때에는 SMTP를 사용하는데, 주로 서버 간 전송하는 경우를 말한다. (예를 들어 네이버 메일을 통해 구글 메일로 메일을 전송..

[컴네/CN] 응용 P2P

순수 P2P 구조 P2P는 peer to peer의 약자로 peer들끼리 직접 통신을 하는 프로토콜이다. 이때 peer는 동료라는 뜻으로 하나의 컴퓨터, 휴대폰 등을 일컫는다. 전통적으로 네트워크는 always on인 서버를 가지고 클라이언트들이 접속하는 상태이지만, p2p는 always on인 서버가 존재하지 않는다. 피어들이 직접적으로 가끔 연결되어 통신하는데, 보통 연결이 안 된 상태가 많다. 이러한 조건을 바탕으로 p2p 구조를 잘 만들기 위해서는 '파일 배포 방법'과 '정보 검색 방법'이 중요하다. Server-Client vs. P2P 1개의 서버가 N개의 피어에게 파일을 배포할 때 얼마의 시간이 걸리는지 비교해보자. - 파일의 크기: F - 서버에 파일을 업로드 하는 대역폭: us - 피어 ..

[컴네/CN] 응용 DNS

DNS(Domain Name System) DNS란 인터넷에 연결된 컴퓨터의 이름과 IP 주소를 매핑해주는 분산 시스템을 말한다. 우리는 어떤 사이트에 접속할 때 'http://naver.com'과 같이 도메인을 이용하여 접근할 수 있다. 도메인을 이용하여 접근을 하기 위해서는 실제 네트워크에서 사용하는 ip 주소로 변환하는 과정이 필요한데, 이러한 모든 일련의 과정을 DNS(Domain Name System)라고 한다. 도메인의 체계는 위 사진과 같다. 1. 최상위 도메인(TLD) 루트 바로 아래 도메인으로 각 국가 정보를 2자리 영문 약자로 표기한다. 2. 차상위 도메인(SLD) 최상위 바로 아래 도메인으로 최상위 도메인에서 정의된 문자열을 제외한 모든 문자열을 사용할 수 있다. 3. 하위 도메인(S..

[컴네/CN] 인터넷 성능

인터넷 속도 측정 https://speed.nia.or.kr/index.asp NIA 인터넷 속도측정 NIA 한국지능정보사회진흥원에서 제공하는 인터넷속도 품질측정 시스템 speed.nia.or.kr 인터넷의 속도 측정은 위 사이트로 진행할 수 있다. 이때, 인터넷의 속도를 측정하는 곳이 외국에 있다면 당연히 그 속도는 느리게 나올 것이다. 위 사이트는 속도를 측정하는 국가에 맞추어 국가를 설정해준다. https://www.speedtest.net/ Speedtest by Ookla - The Global Broadband Speed Test Use Speedtest on all your devices with our free desktop and mobile apps. www.speedtest.net 속..

[컴네/CN] IP Address

인터넷 주소 인터넷 주소는 인터넷에 연결된 장치의 주소이다. 장치의 주소는 두 가지로 나눌 수 있는데, ip 주소와 mac 주소가 그것이다. ip address ip주소는 인터넷에 연결되어 있는 개체(컴퓨터 또는 네트워크 카드)의 식별자(주소)이다. 즉, 논리적인 주소로 네트워크에 따라 변동된다는 특징이 있으며, ISP/공유기에서 할당한다. mac address mac 주소는 디바이스 고유의 식별자로 hardware에 존재하는 physical 주소이다. 즉, 물리적인 주소로 네트워크 카드를 만드는 제조사에서 일정한 규칙에 따라 부여한다. 물리적 주소와 논리적 주솔흘 쉽게 이해하기 위해 예를 들어 보자면, 우리가 택배를 보낼 때 사용하는 도로명주소가 논리적 주소의 예이고, 위치를 지구상의 위도와 경도로 표..

[컴네/CN] 프로토콜 및 소켓

TCP/IP 프로토콜 계층 왼쪽이 TCP/IP, 오른쪽이 osi 프로토콜 계층이다. TCP/IP의 application 계층이 osi에서는 application, presentation, session의 세 계층으로 나뉜다. application 계층은 자유롭게 변경이 가능하며 대부분의 일은 이 계층에서 발생한다. 그 아래의 계층은 운영체제와 가까우며 쉽게 바뀌지는 않지만 지속적으로 변화하고 있는 부분이다. 계층별 식별자 데이터를 전송하면 각 계층 별로 식별자가 존재한다. Application 계층에서는 웹&email&http&P2P를 식별하고, Transport 계층에서는 port number를 통해 식별하고, Network 계층에서는 ip address를 통해 식별한다. ip는 각 인터페이스에게 각각..

[컴네/CN] HTTP와 Cookie

⭐️Review⭐️ HTTP/1.1 위 사진은 HTTP/1.1의 헤더의 모습이며, TCP 연결 재사용을 위해 헤더에서는 Keep-Alive 필드로 표시한다. Keep-Alive 필드는 timeout이라는 최소 시간 동안 max 시간까지 TCP 연결을 유지하라는 의미를 가지고 있다. HTTP/1.1은 한 개의 TCP 연결만을 사용하는 것이 아니라 여러 개의 TCP 연결을 사용하는데 TCP 연결이 너무 많이 생성되면 자원 관리 차원에서 문제가 발생하므로 성능 관리를 위해 브라우저에서는 도메인 당 최대 연결 수를 제한한다. HTTP/1.1 domain sharding HTTP/1.1은 pipelining을 사용하기 때문에 HoL 병목 현상이 발생한다.(이전 포스트 참고) 따라서 해당 pipelining은 많이..

[컴네/CN] HTTP 버전

HTTP 발전 현재는 HTTP/1.1 이상의 버전만 사용한다. HTTP/1.0 HTTP GET 메소드에 대해 1개의 TCP 연결을 사용한다. 즉, 객체 1개 전송할 때 1개의 TCP 연결을 사용한다는 의미이다. 따라서 객체 하나를 전송할 때에 새로운 TCP socket를 생성하고 새롭게 연결을 수행해야 하므로 생성과 연결에 지연 시간이 발생한다. 즉, 왕복지연시간문제(non-persistent HTTP)가 발생한다. 우리는 이러한 왕복지연시간문제를 해결하기 위하여 HTTP/1.1을 만들었다. 이때, 우리는 왜 왕복지연시간을 줄여야 할까? 아래 표는 지연 시간에 따른 사용자 체감을 나타낸 표이다. 밀리초(1/1000초)라는 아주 작은 시간 동안에도 사용자는 체감을 할 수 있다. 사용자가 이러한 지연 시간을..

반응형
LIST