Perché la comunicazione tramite socket non può utilizzare process_id anziché port_number? [chiuso]

0

al giorno d'oggi, sto studiando OS.

In Comunicazione nel capitolo Sistemi client-server, ho sentito dire che l'utilizzo di id di processo invece di numero di porta ha problemi.

Ma non capisco perché lo faccia.

Penso che usare ip + pid sia possibile perché ogni processo ha il proprio id-processo (pid). Il mio pensiero è sbagliato?

    
posta Danny_Kim 28.10.2015 - 17:49
fonte

1 risposta

9

La stabilità del primo e principale problema. La porta 25 è SMTP. La porta 70 è gopher. La porta 80 è http. E così via. Questi sono noti, e numeri assegnati . Hanno un significato tra i sistemi che sono dissimili.

Il numero della porta deve essere stabile. Non è sempre possibile eseguire il processo di posta come processo 25. Non si ha alcuna garanzia su quale ordine venga avviato e, nel caso in cui si debba uccidere e riavviarlo, non si ha alcuna garanzia su quale ID di processo sarebbe. / p>

Avanti, considera che non tutti i sistemi che hanno porte hanno processi (o processi che hanno un numero). Considera un'ipotetica appliance per server web. Si inserisce un'unità USB al suo interno, serve i file da esso. Questo è tutto. Un processo, che continua a servire i file, sarebbe la porta 1? o dovrebbe essere assegnato un numero che ha significato per gli altri? O il mio vecchio Macintosh Plus che eseguiva il sistema 6 e aveva un server web. Nessun numero Quindi è necessario un altro modo per designare la porta che un dato bit di codice sta ascoltando.

Esistono applicazioni con più numeri. Quel server web non solo ascolta sulla porta 80, ma 443 e forse 8080 (per non parlare di "questa macchina ha più indirizzi IP, questo processo in esecuzione sulla macchina ascolta 80 su questo, e 80 e 443 su quello, e 8080 su quest'altro "). Se il sistema era associato a un id di processo, non poteva ascoltare porte diverse per protocolli diversi.

Assegnando numeri, c'è coerenza attraverso la rete. Telnet è la porta 23. Questo programma telnet apre una connessione alla porta 23 e sa quale protocollo è associato a ciò che ascolta lì. FTP ascolta le porte 20 e 21 per diverse parti del suo protocollo, ancora una volta, coerenza. Avere un insieme coerente di regole, numeri e protocolli è ciò che fa andare Internet ".

    
risposta data 28.10.2015 - 19:40
fonte

Leggi altre domande sui tag