Port 3000 là gì

Port có thể là một thuật ngữ còn lạ lẫm đối với những bạn không làm trong ngành công nghệ. Vậy thì Port nghĩa là gì và nó dùng để làm gì, giúp được gì cho bạn thì hãy cùng tìm hiểu trong bài viết này.

Port là gì?

Port là giao thức bit 16 đứng đầu [chèn vào phần đầu header] của mỗi gói tin trong giao thức TCP, UDP hay còn gọi là cổng port, nơi quy định các tập dữ liệu riêng biệt. Port là một dạng thuật toán đã được định sẵn và mỗi máy tính cần phải có thì mới có thể nhận và gửi các gói tin đi được. Khi hoạt động Port cũng được quy đổi giống với số bit của bất kì một mã dữ liệu nào đó. Đơn giản thì đây giống như cánh cổng có quyền cho vào hay không với các dữ liệu muốn ra vào hệ thống máy tính của bạn.

Là một phần quan trọng giúp giữ an toàn cho hệ thống mạng lưới Bitcoin thì hash value là gì là điều bạn nên tìm hiểu khi muốn chơi Bitcoin nhé.

Cần 1 địa chỉ IP, bạn xác định được một máy trong một mạng, nhưng nếu chúng chạy cùng nhiều dịch vụ khác nhau thì phải có cách để phân biệt được chúng và lúc này bạn cần đến Port.

Cổng port giúp ngăn chặn, kiểm soát gói thông tin

Ví dụ, Server A chạy dịch vụ website, DNS và FTP server, có địa chỉ IP là 211.445.026.16. Máy tính nào khác muốn truy cập vào server A thì đến địa chỉ IP hoặc tên miền của máy chủ A. Nhưng cần phải biết Port để đi đúng đến đích đến website A chẳng hạn hay vì đi sai đến DNS hay FTP của A. Lúc này gói tin gửi đi có IP là 211.445.026.16 kèm địa chỉ Port là 80. Tương tự máy B muốn đến FTP của A thì lúc này địa chỉ IP vẫn thế những Port sẽ là 21. Máy C muốn truy cập DNS của A thì Port là 53, IP giống nhau. Trên thực tế, các ứng dụng thường ẩn Port để giảm sự phức tạp của giao thức TCP/IP.

Những chức năng của cổng Port là gì?

Tìm hiểu những nhiệm vụ mà Port xử lý trong hệ thống máy tính chủ của bạn.

Giúp chọn lọc tin

Là một thuật toán mà các máy đều cần phải đăng ký để sử dụng, Port quy định chỉ những tập tin nào mới được phép đi vào máy, tương tự với các tập tin được phép xuất ra khỏi máy. Thao tác kiểm tra khớp cổng bit sẽ giúp bạn kiểm soát và chọn lọc được đâu là tập tin an toàn, đâu là tập đang có vấn đề, từ đó từ chối quyền truy cập.

Có khả năng bảo vệ xâm nhập có hại cho máy tính

Từ tác dụng chọn lọc thì điều đương nhiên là Port có một khả năng để chống lại trước những xâm nhập vào máy bạn. Những phần mềm virus, tệp tin xấu, thông tin gây nhiễu sẽ bị loại bỏ ngay lập tức.

Nếu như Port giúp cho các tập tin được truy cập, được đưa vào đúng với địa chỉ port khớp với đầu bit tập tin đó thì Port 445 là gì và nó có công dụng như thế nào với hệ thống máy tính bạn đã biết chưa?

Tuy là những chức năng vô cùng cơ bản nhưng lại đóng vai trò rất quan trọng, bạn thử tưởng tượng nếu hệ thống máy chủ thiếu đi Port, thông tin độc hại ra vào tự do và phá hủy đi dữ liệu của bạn.

Truy cập FTP server cần qua cổng Port 21

Những loại Port phổ biến hiện nay

Port có tổng cộng là 65535 cổng, được chia làm 3 phần: Well Known Port [WKP] bao gồm các Port quy định từ 0 – 1023, quy định cho các ứng dụng như website [Port 80], FTP [Port 21], email [Port 25]; Registered Port [RP] bao gồm các Port từ 1024 – 49151; Dynamic/Private Port [D/PP] bao gồm các Port từ 49152 – 65535. Theo quy định của IANA thì WKP và RP phải được đăng ký với IANA trước khi sử dụng.

  • 20 – TPC – File Transfer – FTP data: cho phép upload và dowload dữ liệu từ server
  • 21 – TPC – File Transfer – FTP control: Khi có máy tính muốn kết nối với dịch vụ FTP của máy bạn, máy đó sẽ tự động phải thêm Port và tìm cách kết nối đến cổng 21 theo mặc định. Khi đầu bit khớp cổng 21 mở cho máy muốn tới FTP để đăng nhập và nối tới server của các bạn
  • 22 – TPC /UDP – SSH Remote Login Protocol: Nếu bạn chạy SSH Secure Shell, cổng 22 được yêu cầu cho người dùng SSH để kết nối tới người phục vụ của bạn.
  • 23 – TPC – Telnet: Trường hợp bạn chạy một người phục vụ Telnet, cổng này được yêu cầu cho người dùng Telnet kết nối tới người phục vụ của các bạn. Telnet có thể được sử dụng để kiểm tra công tác dịch vụ ở cả các cổng khác.
  • 25 – TPC – Simple Mail Transfer Protocol [SMTP]: khi có thư tới server SMTP của bạn, chúng sẽ cố gắng tiến vào server thông qua Cổng 25 theo mặc định. 38 – TPC – Route Access Protocol [RAP]
  • 42 – TPC -Host Name Server – Microsoft WINS
  • 45 – TPC – Message Processing Module [receive]
  • 46 – TPC -Message Processing Module [send]
  • 50 – TPC – Remote Mail Checking Protocol [RMCP]
  • 66 – TPC – Oracle SQLNET
  • 80 – Hyper-Text Transfer Protocol [HTTP]: khi có người dùng sử dụng địa chỉ IP hay tên miền của bạn, bộ duyệt sẽ giám sát địa chỉ IP trên cổng 80 theo mặc định dành cho website, đồng thời hỗ trợ HTML và các tệp website khác ví dụ như ASP – Active Server Pages
  • 81: Khi một người sử dụng nhập địa chỉ IP hay HostName của các bạn trong bộ duyệt, bộ duyệt sẽ quan sát địa chỉ IP trên cổng 80. Nếu Cổng thì bị tắc nghẽn, Cổng 81 được sử dụng như một Cổng xen kẽ cho một web hosting vietnam nào đó.
  • 88- TPC -Trivial File Transfer Protocol [TFTP]
  • 110 – TCP UDP – Post Office Protocol [POP] Version 3: bạn chạy một máy, người dùng sẽ tiến hành truy cập theo đường POP3 [Nghi thức cơ quan bưu điện] hay IMAP4 [giao thức truy nhập Thông báo Internet] theo quy định. Trong đó thì POP3 đường tốt nhất để truy cập hòm thư.
  • 119 – TCP UDP – Network News Transfer Protocol: bạn chạy server về tin tức, những người dùng muốn kết nối tới các thông tin thì sẽ bắt buộc phải thông qua cổng 119 theo mặc định.
  • 130 – TCP UDP – Cisco FNATIVE
  • 143 – TCP UDP – Internet Message Access Protocol [IMAP] Mail Server: giao thức truy cập thông báo Internet ngày càng trở nên phổ biến hơn bao giờ hết và cho phép sử dụng từ xa. Vì thế, các thông báo đều được giữ ở server để dễ dàng truy cập trực tuyến, online, offline.
  • 161 – TCP UDP – SNMP

Thông qua bài viết này, phần nào bạn đã có thể hiểu được cơ bản những thông tin, định nghĩa, công năng của Port là gì, đồng thời đó là yếu tố quan trọng trong hệ thống máy tính của bạn. Hãy nhớ đón đọc thêm các bài viết khác trên blog của Bkhost nhé!

Nodejs là một flatform để thiết kế phần mềm, đặt biệt là webserver. Chương trình được chạy trên node sẽ được viết bằng JS. Node chạy trên nền của Chrome's Javascript runtime Engine cho phép việc xây dựng ứng dụng web server nhanh, dễ dàng mở rộng. Node.js sử dụng kĩ thuật điều khiển theo sự kiện [event - driver] và nhập xuất bất đồng bộ [non-blocking I/O] giúp nó nhẹ và efficient, hoạt động tốt cho các ứng dụng sử lý dữ liệu data-intensive realtime.

Node bao gồm V8 JS engine của Google và libUV và một số thư viện khác. Nó sử dụng kĩ thuật CommonJS. Ngoài ra nó còn cung cấp môi trường REPL kiểu shell language như python.

Mã nguồn webserver đơn giản

const http = require['http'];

const hostname = '127.0.0.1';

const server = http.createServer[[req, res] => {

res.setHeader['Content-Type', 'text/plain'];

server.listen[port, hostname, [] => {

console.log[`server running at //${hostname}:${PORT}/`];

Một ứng dụng web Nodejs có thể xử một lúc nhiều request nhờ kết hợp của event loop và stack call của engine.

Với mỗi connection được xử lí, callback sẽ được gọi, các connection tới sau có thể sẽ chờ trong event loop tới ghi call stack của connection hiện tại xử lí xong sẽ là connection tiếp theo nằm trong queue. Và Event loop sẽ cứ chạy từ dòng code đầu tiên tới cuối cùng., nếu không có connection nào Nodejs sẽ đơn giản là sleep và để event loop chạy.

Cách hoạt động của node không giống với các mô hình web server hiên nay [Các mô hình hiện nay sử dụng cơ chế thread base, gồm nhiều thread để xử lí đồng thời các request của client] vì các mô hình đó rất khó sử dụng và không hiểu quả lắm. Trong Nodejs chỉ có 1 thread duy nhất → không lo bị deadlock bởi vì trong Nodejs nó không có lock và rất ít thứ trong node chạy mà lock chương trình. → Dễ dàng mở rộng.

Ngoài webserver HTTP thì Node còn làm được nhiều thứ như là máy chủ TCP chẳng hạn

var net = require['net'];

net.createServer[function[stream] {

stream.write['hello\r\n'];

stream.on['end', function[]{

stream.end['goodbye\r\n'];

Event-Loop, Callback queue, Call-Stack, ... etc ...

Là thành phần trong

bộ nhớ runtime

, chưa thông tin về một

subroutine

- tập các cấu lệnh giúp chạy một task cụ thể - của chương trình, call stack là kiến trúc trong hầu hết các ngôn ngữ. Vì theo cấu trúc

stack → LIFO

, các

hàm được gọi vào sau sẽ nằm trên cùng của call stack và được sử lí trước

, rồi mới xuống dần tới cuối stack. Thường khi chạy một chương trình hàm

main[]

sẽ là hàm nhảy

vào stack đầu tiên

→ Hàm main chạy xong thì cũng là lúc chương trình kết thúc. Nếu trong quá trình chạy hàm main[] mà gặp một hàm khác hoặc một opration nào khác thì nó sẽ được push vào call stack và xử lí [nếu là hàm con thì sẽ nhảy vào load hàm con đó, nếu là operation thì xử lí nó]. Mỗi một

thread có thể chứa một call stack

cho thread đó.

Javascipt là một ngôn ngữ chỉ một 1 thread [single thread], đồng nghĩa với việc nó chỉ có một call-stack → Trong 1 thời điểm chỉ làm được một việc.

Ta đã thấy call-stack chỉ có thể làm được một việc một lúc 😱😱😱, vậy nếu bị blocking thì sao - môt hàm hay một chứ năng nào đó chạy chậmm [for loop 1 → 1B, request network...], thì sẽ ra sao → Call-Stack sẽ bị đứng → App sẽ bị treo cho tới khi task đó hoàn thành [╯°□°)╯. → Nghĩa là ta không thể làm gì được hết, nếu trên browser thì nó sẽ đứng máy, nếu trên node thì nó cũng đứng app luôn. Vậy làm sao 😭😭😭

Ta sẽ quăng cho nó một hàm call-back tới khi nào xong thì nó sẽ gọi hàm đó và xử lí đúng không. Quan trong là nếu đưa vào bức tranh toàn cảnh ở trên, thì hàm call-back của chúng ta sẽ nằm ở đâu. Ở đây là lúc các thành phần như web API [trong node là c++ api] và event loop và callback queue hoạt động.

Các hàm

Async hay Promise or setTimeout là thuộc phần của API do Node hoặc trình duyệt cung cấp

, nó

chạy trong một thread khác với runtime

của chúng ta.

Khi nó

chạy xong

, nó sẽ

đưa hàm call-back

vào trong [enqueue]

callback queue

.

Event-loop

sẽ có việc là nó sẽ cứ loop,

khi

trong

runtime call-stack rỗng

→ nó sẽ đưa thứ đầu tiên [

dequeue

] nằm trong

callback queue

vào trong call-stack [

push

].

ES6 trong nodejs và express

sử dụng babel-node cli

npm install -g babel-cli

nhớ là cùng dùng thêm

npm install -save-dev babel-eslint

import express from 'express';

import favicon from 'serve-favicon';

import logger from 'morgan';

import cookieParser from 'cookie-parser';

import bodyParser from 'body-parser';

import routes from './routes/index';

import users from './routes/users'

app.set['views', path.join[__dirname, 'views']];

app.set['view engine', 'jade'];

app.use[bodyParser.json[]];

app.use[bodyParser.urlencoded[{ extended: false }]];

app.use[express.static[path.join[__dirname, 'public']]];

app.use['/users', users];

app.use[[req, res, next] => {

let err = new Error['Not Found'];

if [app.get['env'] === 'development'] {

app.use[[err, req, res, next] => {

res.status[err.status || 500];

app.use[[err, req, res, next] => {

res.status[err.status || 500];

"description": "ES6/ES2015 Express Example",

"start": "babel-node ./bin/www",

"auto-start": "nodemon --exec \"npm run lint && npm start\" --ignore public/js"

"body-parser": "~1.13.2",

"cookie-parser": "~1.3.5",

"serve-favicon": "~2.3.0"

"babel-eslint": "^4.0.10",

Cách cung cấp static file

app.use[express.static[__dirname + '/public']];

.env là file bash → không đuoc chứa khoảng trắng → MONGO = ABC là lỗi mà phải viết sát vào.

Các tính năng học thêm được

Dùng thư viện

thêm file rất dễ dàng.

Nếu muốn Id trong mongodb ngắn hơnー > dùng

dns module của node, cho khả năng check trang web

Để dns lookup được thì không nên có http hoặc https ...

Tách url → regex = /^[.*:]\/\/[.*]/;

Cách tạo trường tự tăng trong mongodb.

onst mongoose = require['mongoose'];

const counterSchema = mongoose.Schema[{

_id: {type: String, required: true},

seq: {type: Number, default: 0}

const Counter = mongoose.model['counter', counterSchema];

//Counter[{ _id: 'shortLinkShortUrl'}].save[];

const shortLinkSchema = mongoose.Schema[{

original_url: {type: String},

short_url: {type: Number}

shortLinkSchema.pre['save', function[next]{

Counter.findByIdAndUpdate[

{ _id: 'shortLinkShortUrl'},

function[error, counter]{

doc.short_url = counter.seq;

const ShortLink = mongoose.model['short-link', shortLinkSchema];

module.exports = ShortLink;

Tạo một model chưa các số thứ tự hiện tại của mỗi opject. [nhớ tạo document]

dùng hook pre của schema.

Người ta làm link thu gọn kiểu gì.

Lấy link → lưu vào database cùng với chuỗi short của nó

Khi truy cập vào link short thì redirect tới đường dẫn chính.

Để redirect ra một service , website khác hệ thống → cần phải có thêm ‘http’ và ‘https’

Page 2

Ở SQL có mối quan hệ 1 - N → bên nosql phải làm sao đây

Ta cần chia nó ra thành 3 loại nhỏ hơn

Ví dụ có thể là địa chỉ của một người, [ít] nên ta có thể gán nó vào trong model người luôn

{ street: '123 Sesame St', city: 'Anytown', cc: 'USA' },

{ street: '123 Avenue Q', city: 'New York', cc: 'USA' }

Ích lợi: không cần phải query nhiều để lấy các thông tin addr như trên

Bất lợi: không thể query các thông tin addr một cách độc lập

vd là một sản phần có nhiều thành phần được rắp láp lại. Và mỗi thành phần có một số thông tin

Bạn có thể query một cách tốt hơn

// Fetch the product document identified by this catalog number

product = db.products.findOne[{ catalog_number: 1234}];

// Fetch all the Parts that are linked to this

product_parts = db.parts.find[{ _id: { $in:

}}].toArray[];

Ích lợi:

vì product_parts nằm trong document riêng → có thể truy cập độc lập

Disadvantage: Phải query 2 câu nếu muốn lấy hết các parts của một product

ví dụ có thể là hệ thông log - một host có thể có rất rất nhiều log

Cách tốt là lưu ObjectId của host trong mỗi log

message: 'cpu is on fire!',

Cách query có thể như sau

host = db.hosts.findOne[{ ipaddr: '127.0.0.1'}];

last_5k_msg = db.logmsg.find[{ host: host.id}].sort[{time: -1}].limit[5000].toArray[];

Video liên quan

Chủ Đề