
VUE3.0을 빠르게 시작하는 방법: 학습 시작하기
이 기사는 Nodejs 시리즈의 첫 번째 기사입니다. 이전에 튜토리얼을 읽었을 때 많은 튜토리얼이 IO, 버퍼, 경로, 이벤트, fs, 프로세스로 시작했습니다. 노드 이벤트 루프 메커니즘.. 실제로 노드 개발이 주로 의존하는 개발 종속성입니다. 하지만 노드에 대해 배울 때부터 노드가 백엔드를 수행할 수 있다는 의미이지만 이 과정의 전반부는 그것이 가지고 있는 기능, 즉 어떻게 상호 작용하는지에 대해 이야기합니다.클라이언트 통신 모듈 소개.
너무 불편해서 직접 요약을 작성할 때 서버 간 통신하는 모듈을 작성해야 합니다.
클라이언트가 먼저 편안함을 느낄 수 있도록 이벤트 모듈과 fs 모듈의 지식 포인트가 프로세스에 포함되어 있더라도 지금은 net 모듈net 통신을 구현하는 방법을 이해하면 됩니다.
통신 모듈을 배우려면 네트워크 통신 모델을 이해해야 하며, 네트워크 통신 모델을 기억하려면 이를 연습해야 합니다. 이것이 인터뷰의 초점입니다. 이 분야에는 많은 내용이 있으며 이에 대한 심층적인 이해가 필요하며, 이에 대한 간략한 설명은 다음과 같습니다
.

인 http(포트 80), FTP(21), SMTP(메일 보내기), POP(메일 받기), DNS
전송 레이어를
기억해야 합니다
. : TCP/UDP 인터넷 계층: IP, ICMP(IP 계층의 보조 프로토콜) 데이터 링크 계층: PPP, SLIP 물리 계층: 네트워크는 ISO2110 사양에
따라
연선
,
동축 케이블, 광섬유 및 기타 전송 방법을 갖습니다.
이에 ICMP IP 프로토콜에 첨부된 프로토콜을 보면 네트워크 프로토콜의 계층화에 대해 크게 걱정할 필요가 없다는 것을 알 수 있습니다. ICMP 당연히 IP 프로토콜을 기반으로 해야 하지만 네트워크 계층으로도 계획되어 있습니다. OSI 모델에 대한 올바른 이해는 소위 프로토콜 계층화를 사용하는 것보다 OSI 모델을 사용하여 문제를 분석하는 것이 더 의미가 있다고 생각합니다
. 및 IP 프로토콜이지만 이 두 프로토콜은 너무 동떨어져 있기 때문에 TCP를 사용합니다. /IP는 인터넷과 관련된 프로토콜의 집합을 통칭하는 것입니다. TCP/IP 프로토콜을 사용하는 과정은
클라이언트와 서버의 전송 흐름은 다음과 같습니다.

역할이发送者및接受者되는 경우 전송 흐름은 다음과 같습니다.

전송 과정에서 송신 측부터 시작하여 프로토콜 계층을 거치지 않고 필요한 헤더 정보가 추가되는 것을 볼 수 있습니다.
각 레이어는 해당 헤더를 제거하여 통과합니다.위
그림은 "그림 HTTP"에서
가져온
것입니다.질문: 책과 많은 곳에서 OSI 시스템 결과를 TCP/IP로 병합합니까? 5계층 프로토콜 이후에는 네트워크 계층의 이름이 인터넷 계층이 되나요

첫 번째 핸드셰이크: 클라이언트가 서버에 SYN 플래그(순서 번호는 J)를 보내고 SYN_SENT 상태로 들어갑니다(서버의 확인을 기다림).
두 번째 핸드셰이크: 서버가 클라이언트로부터 SYN J를 수신하고 서버가 확인합니다. 데이터 패킷이 수신되어 ACK 플래그 비트(시퀀스 번호는 J + 1) 및 SYN 플래그 비트(시퀀스 번호는 K)를 보낸 후 SYN_REVD 상태(요청 수락 및 클라이언트 확인 대기 상태)로 들어갑니다.
세 번째 핸드셰이크: 클라이언트 진입 연결이 설정된 후 클라이언트가 설정된 연결을 수신했음을 확인하기 위해 ACK 플래그 비트(K+ 1)가 서버로 전송됩니다. 서버는 ACK 플래그를 수신한 후 연결 설정 상태
에 진입합니다.J
K는 둘 다 누가 연결인지 설정하는 데 사용됩니다. 요청에서 SYN과 ACK의 구조에는 차이가 없지만 전송된 개체는 다릅니다.
net模块은 위 TCP 연결의 특정 구현입니다
,
API를 배우려면 공식 문서로 직접 이동하는 것이 좋습니다. 중국어 문서의 내용은 최신 버전이 아닙니다.
.공부할 때 시간이 나면 영어 문서를 읽으려고 노력합니다
.. 처음에는 참을 수 없어서 반년 동안 주장했는데, 이제 반년 동안은 불편함을 참고 읽을 수 있게 되었습니다. 그것은 좋은 것입니다. 이것은 결국 당신의 안전 지대를 넘어서는 용기가 발전의 원천이라는 것을 의미합니다
. 다음으로, 당신은 의사소통을 배우고 싶기 때문에 두 가지가 필요합니다. 클라이언트와 서버를 시뮬레이션하기 위한 객체 두 개, 각각 client.js 및 service.js 명령줄을 통해 생성:
touch client.js && touch service.js
net 모듈을 소개하고 서버는 LISTENT 상태로 들어가 포트 번호와 HOST 주소를 구성하고(DNS 확인 프로세스를 수동으로 건너뛰기) 클라이언트의 호출을 기다립니다.
const net = require("net");
const 게시물 = 3306;
const 호스트 = "127.0.0.1";
const 서버 = net.createServer();
server.listen(post,host); 이때 서버는 TCP 연결에서 서버의 LISTEN 상태에 해당합니다.
그러면 서버에서 제공하는 Hook인 몇 가지 필요한 이벤트를 수신합니다. )
server.on("듣기", ( ) => {
console.log("서버에 접속할 수 있습니다.");
});
server.on("연결", (소켓) => {
console.log("클라이언트가 방문 중입니다.");
});
server.on("닫기", () => {
console.log("서버가 종료되었습니다.");
});
server.on("오류", (오류) => {
console.log("서버에 오류가 있습니다: ", error); // 오류에 오류 정보가 있습니다.}); 위의 코드 문자열에는
listening 대기: 포트connection 수신한 후 발생하는 이벤트: 클라이언트가 수신할 때 발생하는 이벤트 방문close : 서버 종료error 로 인해 발생 : 서버 오류로 인해 발생ps
close 사실에 주의해야 합니다
Kill -9 pid는
스레드를 종료하여 수행됩니다.
connection 개에서 형식 매개변수는 소켓 이름입니다. 중국어로 번역하면 노드별로 스트림으로 캡슐화되는 것으로 대략 이해될 수 있습니다. 클라이언트가 보낸 데이터입니다. 데이터 자체에 자체 socket 가 있기 때문입니다 connection
server.on("connection", (socket) => {
console.log("클라이언트가 방문 중입니다.");
소켓.온("데이터", (데이터) => {
console.log(data); //클라이언트가 보낸 데이터});
}); 클라이언트가 보낸 데이터를 서버가 받아들일 수스트림은
있기
socket.on 자연스럽게 클라이언트에 응답할 수 있습니다. (물론 외부에서도 쓸 수 있습니다.)
("서버, 클라이언트를 받았습니다.") 이때 클라이언트가 데이터 수신을 완료한 후 연결을 닫은 경우 socket.on('close') 후크를 통해 이를 모니터링할 수도 있습니다
. ("닫기", () => {
console.log("클라이언트가 스트림의 반대쪽 끝을 종료했습니다.");
}); client.js 에 socket 이벤트 요약을 넣습니다. 이때 service.js 의 모든 내용은 다음과 같습니다.
const net = require("net");
const 게시물 = 3306;
const 호스트 = "127.0.0.1";
const 서버 = net.createServer();
server.listen(포스트, 호스트);
server.on("듣기", () => {
console.log("서버에 접속할 수 있습니다.");
});
server.on("연결", (소켓) => {
console.log("클라이언트가 방문 중입니다.");
소켓.온("데이터", (데이터) => {
console.log(data); //클라이언트에서 보낸 데이터입니다.socket.write("귀하의 서버, 클라이언트로부터 받았습니다.");
});
소켓.온("닫기", () => {
console.log("클라이언트가 스트림의 반대쪽 끝을 종료했습니다.");
server.close(); // 클라이언트에는 더 이상 데이터가 필요하지 않으므로 서버를 닫습니다});
});
server.on("닫기", () => {
console.log("서버가 종료되었습니다.");
});
server.on("오류", (오류) => {
console.log("서버에 오류가 있습니다: ", error); // 오류에 오류 정보가 있습니다.}); 부분이 훨씬 간단
합니다.
const 게시물 = 3306;
const 호스트 = "127.0.0.1";
const 소켓 = net.connect(포스트, 호스트);
소켓.온("연결", () => {
console.log("이미 서버에 연결되었습니다.");
});
소켓.write("서버님, 제가 왔습니다");
소켓.온("데이터", (데이터) => {
console.log(data.toString());
소켓.끝();
});
소켓.온("닫기", () => {
console.log("연결이 종료되었습니다.");
}); socket 이벤트 요약
connect : 서버와의 성공적인 연결은data 트리거합니다. : 서버end 에서 보낸 매개변수를 수신합니다. : 데이터가 수신된 후close 트리거할 수 있습니다. 소켓 닫기는service.js 및 client.js 프레임워크를
두 개의 터미널을 연 후 실행하십시오:
node service.js node client.js는
자체적으로 인쇄된 결과를 확인할 수 있습니다.
물론 전체 TCP 연결 프레임워크는 완료되었습니다. 물론 실제 생산은 그 이상입니다.
이 기사는다음
에서 복제됩니다: https://juejin.cn/post/7084618854801866765
저자: 나는 작은 오렌지입니다