有一個系統調用被稱爲socket();
它在監聽服務器上創建一個套接字。 我想了解的是服務器創建IP +端口組合。 讓我們說telnet使用端口23. 現在,當客戶端機器進行連接,然後服務器正在偵聽的端口,然後連接沒有在端口23上,實際上它是在不同的端口上。我的混淆是 服務器端也會發生同樣的事情。 例如,我編寫一個服務器來偵聽端口23,然後在服務器端使用不同的客戶端完成連接,這些連接是如何區分的,因爲它們都將位於同一個端口上。所以,如何在同一端口上進行如此多的連接服務器端口。如果有人使用telnet(23)或ftp(21)或ssh(22),那麼許多人仍然可以登錄到服務器上的同一個服務端口,即不同用戶的ssh連接多於一個,其中ssh是隻在端口22處監聽。那麼,socket究竟做了什麼或者如何創建一個套接字呢?與C網絡編程中的套接字相關的問題
UPDATE
我得到了什麼,通過來自客戶機在連接發起的服務器端的其他東西可以處理的IP +端口組合explained.Depending,我想這大概的信息是由套接字文件描述符使用。我看到的是在我們使用如下
connect(sockfd,(struct sockaddr *)&client_address,size_t);
我們做struct sockaddr *
通過在其具有獨特的IP +端口組合我認爲,當服務器收到這個在接受後來的事情進行客戶端connect()
系統調用。 我想進一步知道的是在服務器端的說法
accept(server_sockfd,(struct sockaddr *)&client_address,(size_t *)sizeof (struct sockaddr));
是否得到從客戶端進行使用連接() 系統調用傳遞相同的CLIENT_ADDRESS?如果是,那麼用於監聽多個客戶端的同一個服務器的socket_descriptor是不同的。我想知道的是當接受來自客戶端的請求時,服務器端的數據結構是如何維護的。
那麼它如何區分連接? –
@註冊:我添加了一個例子。如果這還不夠,試着解釋你的理解,以便我們知道你在想什麼。 –
非常感謝您的回答,我進一步深入瞭解並更新了問題。 –