일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- ip
- 문자열
- socket
- 타입스크립트
- Nestjs
- Node.js
- typescript
- 프로그래머스 레벨 2
- 백준
- 크롤링
- HTTP 완벽 가이드
- dfs
- 수학
- 프로그래머스
- 가천대
- BFS
- 타입 챌린지
- 그래프
- Crawling
- javascript
- 소켓
- type challenge
- 자바스크립트
- 레벨 1
- 쉬운 문제
- 알고리즘
- TCP
- HTTP
- dp
- Today
- Total
목록프로그래밍/네트워크 (27)
kakasoo
여기의 글은 성공과 실패를 결정하는 1%의 네트워크 원리 책을 읽고 스터디한 내용의 결과물이다. 이 장에서 배우는 내용 케이블과 리피터, 허브 속에서 신호가 흘러가는 모습 스위칭 허버의 패킷 중계 동작 라우터의 패킷 중계 동작 라우터의 부가 기능 01. 케이블과 리피터, 허브 속을 신호가 흘러간다 1. 하나하의 패킷이 독립된 것으로 동작한다 컴퓨터에서 송신된 패킷은 허브나 라우터라는 중계장치에 의해 목적지를 향해 진행한다. 이 때, 중계 장치들은 데이터를 보지 않고 중계하는 역할만 한다. 내용을 보지 않으므로 애플리케이션의 데이터나 TCP 프로토콜의 제어 정보를 운반하므로, 담고 있는 데이터가 전송에 영향을 주는 일은 없다. 실제 가정에서는 여러 기기들이 하나로 통합된 단일 기기를 사용하는 경우가 많지만..
05. IP와 이더넷의 패킷 송수신 동작 1. 패킷의 기본 TCP 담당 부분은 접속, 송수신, 연결 끊기의 각 단계에서 통신 상대와 대화할 때 IP 담당 부분에 의뢰하여 데이터를 패킷의 모습으로 만들어 상대에게 보낸다. 패킷은 헤더와 데이터의 두 부분으로 구성된다. 헤더에는 수신처를 나타내는 주소 등 제어 정보가 들어있고, 데이터에는 의뢰처에서 의뢰한 데이터가 들어있다. 먼저 패킷의 송신처가 되는 기기가 패킷을 만드는데, 헤더에는 적절한 제어 정보를 기록하고, 데이터 부분에 일정 크기의 데이터를 넣은 후 가장 가까운 중계 장치로 전송한다. 가장 가까운 중계 장치에 도착한 이후, 도착한 패킷의 정보를 조사하여 패킷의 목적지를 판단한다. 이 판단 과정에서, 수신처가 어느 방향에 있는지에 대한 정보를 기록한 ..
이 글은 성공과 실패를 결정하는 1%의 네트워크 원리를 읽고, 스터디한 결과를 토대로 작성했다. 03. 데이터를 송수신한다 1. 프로토콜 스택에 HTTP 리퀘스트 메시지를 넘긴다 socket connect 이후 write를 호출하여 데이터 송수신 단계로 이행한다. 프로토콜 스택은 데이터를 바이너리 데이터가 1바이트 단위로 이어져 있다는 것만 알 뿐 데이터의 내용은 알지 못한다. 프로토콜 스택은 일단 데이터를 버퍼 메모리 영역에 저장한다. 그 이유는, 데이터의 길이는 애플리케이션의 종류나 만드는 방법에 따라 결정 ( 데이터를 한 번에 보내는지, 몇 분할을 해야 하는지, 애플리케이션에서 결정 ) 하기 때문이다. 만약 데이터 저장 없이 바로 보낸다고 한다면 만약을 대비하여 짧은 길이로 나누어 보내야 하는데, ..
이 글은 성공과 실패를 결정하는 1%의 네트워크 원리를 읽고, 스터디한 결과를 토대로 작성했다. 이 장에서는 OS에 내장된 프로토콜 스택이 어떻게 송신을 의뢰하는지에 대해서 설명한다. ( 1장에서 OS에 의뢰한다고 설명했던 것을 더 세세히 분석한다. ) 01. 소켓을 작성한다. 1. 프로토콜 스택의 내부 구성 OS에 내장된 네트워크 제어 용 소프트웨어 ( 프로토콜 스택 ) 과 네트워크 용 하드웨어 ( LAN 어댑터 ) 가 브라우저에서 받은 메시지를 서버에 송출하는 동작을 한다. 계층의 최상위에는 애플리케이션 계층이 있다. 여기부터 아래로 향하여 데이터 송수신 등의 일을 의뢰한다. 애플리케이션에는 Socket 라이브러리가 있는데, 다시 이 안에는 리졸버가 내장되어 있다. 애플리케이션 계층 아래는 OS를 나..
이 글은 성공과 실패를 결정하는 1%의 네트워크 원리를 읽고, 스터디한 결과를 토대로 작성했다. 03. 전 서계의 DNS 서버가 연대한다 1. DNS 서버의 기본 동작 DNS 서버의 기본 동작은 클라이언트에서 조회 메시지를 받고 조회의 내용에 응답하는 형태로 정보를 회답하는 일이며, DNS 서버의 이런 과정 역시 프로토콜이라고 할 수 있다. 조회 메시지에는 이름, 클래스, 타입 의 세 가지 정보가 포함되어 있다. 이름에는 서버나 메일의 배송 목적지 ( 메일 주소에서는 @ 기호 뒤의 문자열 ) 를 나타내며, 클래스에서는 인터넷을 나타내며 기호는 IN , 타입에는 어떤 종류의 정보가 지원되는지를 나타낸다. 2개의 타입만 설명하자면, 타입이 A면 IP 주소를, MX면 메일 서버의 이름을 제공하게 되어 있다. ..
이 글은 성공과 실패를 결정하는 1%의 네트워크 원리를 읽고, 스터디한 결과를 토대로 작성했다. 1장의 내용은 브라우저에 URL을 검색하게 될 때 URL을 해독하는 것부터 시작된다. 이 책의 내용은 브라우저에 검색을 했을 때, 네트워크가 어떻게 동작하는지를 실제 순서대로 담고 있다. 나중에 이 순서에 대해 자세히 설명할 수 있는지 스스로 물어보자. HTTP 리퀘스트 메시지를 작성한다. 웹 서버의 IP 주소를 DNS 서버에 조회한다. 전 세계의 DNS 서버가 연대한다. 프로토콜 스택에 미시지 송신을 의뢰한다. 01. HTTP 리퀘스트 메시지를 작성한다 1. 탐험 여행은 URL 입력부터 시작한다. 브라우저는 몇 개의 클라이언트 기능을 겸비한 복합적인 클라이언트 소프트웨어 ⇒ 어떤 기능을 사용하여 데이터에 접..
act.sa_handler = urg_handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; fcntl (recv_sock, F_SETOWN, getpid()); state = sigaction (SIGURG, &act, 0); 이 코드들에 대해서 이야기 해보도록 하자! MSG_OOB : 긴급 메세지의 전송 저자는 다음과 같이 설명한다. 만약 환자들이 줄 서 있는 병원에 긴급 환자가 오면, 길을 비켜주는 게 당연한 수순 아니냐고, 즉 차례를 양보한다는 뜻. 여기서의 긴급 메세지도 비슷한 의미로서, 긴급한 메세지의 경우 전송 방법과 경로를 달리 하겠다는 뜻이다. server 측에서는 그저 send() 함수에 옵션을 넣어서 보내주기만 하면 된다, 아래의 간략한 코드를..
라즈베리파이를 다루고 있는지라, 이 함수들에 대해서 자세히 볼 수 밖에 없게 되었다. 미리 말하는데, 위의 함수와 동일하게 write와 read함수가 있는데, 거의 비슷하다. 미세한 차이가 있긴 한데, 이 미세한 차이를 느낄 수 있을까, 사실 그걸 위해 설명하는 것이기도 하지만, send, recv는 옵션을 설정할 수도 있고... usb port 라던가, 입출력 방식에 따른 호환성이 높은 편이라 할 수 있다.ㅌ 리눅스에서의 send & recv 함수 ssize_t send (int sockfd, const void* buf, size_t nbytes, int flags) sockfd // 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터, 윈도우에서는 그저 0이었다 buf // 전송할 데이터를..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 #include #include #include #include #define BUF_SIZE 1024 void ErrorHandli..
server와 client는 서로 이렇게 입출력을 주고 받는다, 물론 main이 되는 server가 있긴 하겠지만, 이런 입출력은 반드시 server와 client간의 것이 아니니, client끼리도 입출력을 주고받을 수는 있긴 하겠다, 그러니 그림을 다시 그려보자. 좌측처럼 그리면 모든 대상이 정보를 주고 받을 수 있을 것이다. 하지만 필요한 socket의 수가 매우 많아질 것이고, 당연히 연결도 빈번해지니 전체 시스템이 느려질 수 밖에 없다. 그러니까 새로이, 우측 같은 그림으로 다시 그려보자. 이런 형태로 그리게 된다면, 각 선의 길이도 (개수를 의미) 줄고 입출력의 숫자도 절반으로 줄어들게 된다. 멀리플렉싱 기반의 서버라는 것은 위의 그림과 같은 형태를 의미하는데, 엄밀히 표현하면, 서버에 멀티플..
내 지인 sdworkbase가 나한테 운영체제에 대한 과외를 해줬을 때, 프로세스에 관한 이야기가 나온 적 있었다. 프로세스는 메모리 공간을 차지한 상태에서 실행 중인 프로그램을 지칭하는 말이다. 저장 중인 상태에서는 프로그램이지만, 동작하는 시점에서는 프로세스다. 이런 원리가 갑자기 왜 나오냐면, 내가 만들 서버에서도, 다중 접속을 허용하기 위해 필요하기 때문이다. 프로세스들은 운영체제에 의해서 실행과 멈춤을 반복하게 되는데, 마치 껌벅이는 듯한 이런 모양새 덕분에 컴퓨터는 적은 자원으로 여러 프로그램들을 실행시킬 수 있게 된다. 말하자면, 하나의 서버는 1등부터 100등까지 선착순으로 정보를 제공해주는데, 1등과 100등의 접속 시간 차이가 단 0.5초에 불과한데도 결과에 대한 지연 시간이 너무 큰 ..
IP 주소와 도메인 이름 사이에서 변환을 수행하는 시스템을 가리켜 DNS (Domain Name System) 이라고 하며, DNS의 중심에는 DNS 서버가 있다 - 윤성우 열혈 TCP/IP 소켓 프로그래밍 184P 125.209.222.141를 주소창에 입력해보자, 두려워하지 말라, 이상한 게 아니다. 넣으면 네이버가 나온다, 이는 네이버의 IP 주소이다. 자, 다시 정리해보자, 네이버 "도메인" 주소는 www.naver.com 이다. 네이버 네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요 www.naver.com 왜 이 주소가 아닌 숫자를 입력해도 네이버가 나오는 걸까, 이 두 접속 방법의 차이는 무엇일까? 정답은, 문자열로 되어 있는 이 주소는 가상의 주소이지, 실제 주소가 아니라는 점이..