声明:所有文章只作为学习笔记用,转载非原创
socket、端口、进程的关系
https://www.jianshu.com/p/ed39c81d081b
套接字结构体
https://www.cnblogs.com/retry/p/9308802.html
什么是socket
Socket的英文原义是“插座”(还有其他含义,但是当初网络变成起名为socket主要是借用了插座的概念)。通常也称作”套接字”,主要用于解决网络进程间通信。
两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程。本地进程间通信(PIPE、FIFO、message queue、semaphore、shared memary)可以通过进程ID唯一标识一个进程。网络进程间通信呢?PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标识主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
Socket的英文原义是“插座”(还有其他含义,但是当初网络变成起名为socket主要是借用了插座的概念)。通常也称作”套接字”,主要用于解决网络进程间通信。
socket 中存储了特定的四元组: 源ip+port,目的ip+port;
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用,从而实现进程在网络中通信。
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
总而言之,我们这里所说的端口,不是 计算机硬件的I/O端口,而是软件形式上的概念.工具提供服务类型的不同,端口分为两种,一种是[TCP端口] 一种是UDP端口
https://blog.csdn.net/u011580175/article/details/80306414
1.一个端口同一时间只能bind给一个SOCKET。就是同一时间一个端口只可能有一个监听线程(监听listen之前要bind)。
2.为什么一个端口能建立多个TCP连接,同一个端口也就是说 server ip和server port 是不变的。那么只要[client ip 和 client port]不相同就可以了。能保证接唯一标识[server ip, server port, client ip, client port]的唯一性。
linux 分配端口
https://www.jianshu.com/p/f5c47ad0c51c
端口分配
程序的端口分配分为固定分配和自动分配两种。一套系统中固定端口是要进行规划的,比如ftp的端口为10021(控制连接时服务端的),控制连接时客户端的端口就可以随机分配。ftp数据连接如果在被动模式下服务端和客户端的端口都可以随机分配,如果在主动模式下,服务端的端口可以固定分配,客户端的端口随机分配。
socket为内核对象,由操作系统内核来维护其缓冲区,引用计数,并且可以在多个进程中使用。 至于称它为“句柄”“文件描述符”都是一样的,它只不过是内核开放给用户进程使用的整数而已。
socket() 创建了一个socket内核对象。 accept或者connect后,才可以对socket句柄读写。因为只有在 connect或者bind,listen,accept后才会设置好socket内核对象里边的ip和端口 。
网友评论