Mặc dù câu hỏi này đã được đánh dấu là đã trả lời, tôi muốn giải quyết một số câu hỏi bổ sung được hỏi trong OP.
Là những cổng vật thể vật lý?
Không có cổng không phải là đối tượng vật lý.
Số cổng là số nguyên không dấu 16 bit, có nghĩa là phạm vi cổng có sẵn để sử dụng là từ 1 đến 65535 (số cổng 0 được bảo lưu và không thể được sử dụng). Một quy trình liên kết các kênh đầu vào hoặc đầu ra của nó thông qua các ổ cắm Internet, một loại mô tả tệp, với một giao thức truyền tải, số cổng và địa chỉ IP. Quá trình này được gọi là ràng buộc và cho phép gửi và nhận dữ liệu qua mạng.
Có phải chúng là thứ gì đó được tích hợp vào máy tính của tôi không? Họ thậm chí là một cái gì đó vật lý? Hoặc viết bằng mã? Mã này ở đâu? Hệ điều hành? Điều gì thực sự là một cảng?
Phần mềm mạng của hệ điều hành có nhiệm vụ truyền dữ liệu đi từ tất cả các cổng ứng dụng lên mạng và chuyển tiếp các gói mạng đến một quy trình bằng cách khớp địa chỉ IP và số cổng của gói.
Chỉ một quá trình có thể liên kết với một địa chỉ IP cụ thể và kết hợp cổng bằng cách sử dụng cùng một giao thức truyền tải. Lỗi ứng dụng phổ biến, đôi khi được gọi là xung đột cổng, xảy ra khi nhiều chương trình cố gắng liên kết với cùng một số cổng trên cùng một địa chỉ IP bằng cùng một giao thức.
Đoạn văn trên là chìa khóa để hiểu tại sao các cổng / giao thức được sử dụng trong mạng. Nếu chúng tôi không có cách nào để chỉ định giao thức truyền dữ liệu qua số cổng apon đã thỏa thuận - bạn sẽ không thể thực hiện nhiều hơn 1 việc một lúc (kiểm tra email và sử dụng web) vì máy tính của bạn sẽ có không có cách nào để phân biệt giữa dữ liệu cho ứng dụng email của bạn và dữ liệu cho trang web bạn đang duyệt.
Có bao nhiêu cổng?
Số cổng được gán theo nhiều cách khác nhau, dựa trên ba phạm vi:
Được biết đến / Cổng hệ thống (0-1023) - Phạm vi cổng này được sử dụng bởi các quy trình hệ thống cung cấp các loại dịch vụ mạng được sử dụng rộng rãi (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)
Cổng đã đăng ký / người dùng (1024-49151) - Phạm vi số cổng từ 1024 đến 49151 là các cổng đã đăng ký. Chúng được IANA gán cho dịch vụ cụ thể khi ứng dụng bởi một thực thể yêu cầu. (Webmin / 10000, HTTP Proxy / 8080, Giao thức máy tính từ xa / 3389, v.v.)
Các cổng Ephemeral / Dynamic / Private (49152-65535) - Phạm vi 49152 Lỗi65535 chứa các cổng động hoặc riêng không thể đăng ký với IANA. Phạm vi này được sử dụng cho các mục đích tùy chỉnh hoặc tạm thời và để phân bổ tự động các cổng phù du.
Tôi có thể tăng hoặc giảm số lượng cổng không?
Liên quan đến việc có thể tăng số lượng cổng khả dụng, bạn không thể chỉ định một cổng trên 65535 do toán học cho phép kết nối mạng (nhị phân) - vì vậy câu trả lời cho câu hỏi này là không, bạn không thể tăng tổng số cổng khả dụng cổng trên 65535.
Giao thức là gì?
Trong khoa học máy tính, một giao thức truyền thông là một hệ thống các quy tắc kỹ thuật số để trao đổi thông điệp trong hoặc giữa các máy tính. Khi tin nhắn được trao đổi qua mạng máy tính, hệ thống quy tắc được gọi là giao thức mạng. Một giao thức về cơ bản là một tập hợp các lệnh / lệnh / cuộc gọi đã được thống nhất mà hai thiết bị nối mạng có thể giao tiếp với nhau. Hãy suy nghĩ nếu chúng ta không đồng ý với các giao thức và máy chủ web chỉ gửi dữ liệu ngẫu nhiên tới các trình duyệt web mà trình duyệt không biết phải làm gì với? May mắn thay, chúng tôi có HTTP và mọi trình duyệt web được tạo đã tích hợp vào phần mềm để nó có thể giao tiếp với bất kỳ máy chủ web nào cũng nói cùng ngôn ngữ (HTTP).
Tôi tưởng tượng chúng là một loại mã .... Bạn có thể tạo giao thức của riêng mình không? Ngôn ngữ nào bạn sử dụng để tạo giao thức?
Có, bạn có thể tạo các giao thức của riêng bạn. Các giao thức được viết bằng nhiều ngôn ngữ. Tôi không phải là nhà phát triển phần mềm, nhưng tôi khá chắc chắn rằng miễn là bất kỳ ngôn ngữ nào bạn đang sử dụng đều có thư viện cho phép bạn viết phần mềm có thể giao tiếp qua TCP / IP (có các bộ giao thức khác, nhưng TCP / IP là hầu hết được sử dụng rộng rãi) bạn có thể sử dụng ngôn ngữ đó để viết một giao thức. Ngôn ngữ lập trình 'C' dường như được sử dụng phổ biến nhất để viết các giao thức. Điều này là do thực tế là nhiều giao thức mạng đầu tiên được phát triển trên UNIX vào những năm 1970 và C tình cờ là ngôn ngữ mà chính UNIX được viết.
Làm thế nào để bạn có được một cổng cụ thể để chạy một giao thức cụ thể?
Điều này khác một chút giữa các hệ điều hành. Ví dụ: để thay đổi số cổng Remote Desktop Protocol chạy trên Windows, bạn cần chỉnh sửa sổ đăng ký. Trên Linux, nhiều dịch vụ mạng có thể được cấu hình trực tiếp từ tệp .conf cho một dịch vụ mạng cụ thể.
Làm thế nào để bạn xác định hoặc phát minh ra một giao thức mới?
Xem https://journal.paul.querna.org/articles/2012/02/22/designing-network-prot Protocol / cho một bài đăng trên blog của một người gần đây đã phát triển một giao thức mạng mới và những việc anh ta phải làm dọc đường.