Socket基础一
1 七层模型
2 TCP/IP四层模型
3 五层模型:
(1)实体层(物理层)
比如有网线,电缆,双绞线;蓝牙等这些物理界存在的这些硬件
(2)链接层(数据链路层)
A,B,C,D代表了不同的实体设备,如果A要给B传信息(可以理解为0和1的电信号),首先需要先广播,,A带上自己的mac地址,将广播信号传出去,其他的电脑接收到之后回传自己的mac地址; 这时候A就知道要传给谁,但是不能精确的根据MAC地址将信息传给目标方,还是要继续广播,此时需要带上接收方的mac地址,这时候接收方会判断A传来的mac地址是不是和自己的一致,一致的话就接收,不一致的话就作废了。 还有必须要注意的是在数据链路层中广播形式的这种传方式必须是在局域网中的,如果互联网中是 不能这样做的,因为互联网是由多个子网构成,比如说从子网1中的A设备向子网2中的B设备传信息 ,B设备是没法确认哪个设备的。
Head:描述信息
Data:真正的数据源
补充: MAC地址用于在网络中唯一标示一个网卡,如果一个电脑有多个网卡,那就有多个MAC地址,MAC地址能够唯一的标识一个电脑设备,MAC地址是在数据链路层。通常情况下是不会用IP地址来唯一标识电脑设备的,因为IP地址是可以手动改,万一改了和其它设备一样的就会出问题,还有就是内网中的IP是存在重复的可能
(3)网络层
上面其实讲过数据链路层中的广播形式的数据传输是局限于局域网内的,互联网又是通过多个子网构成的,所以在互联网中各个子网之间的定位以及信息传输需要一个新的规则,这个规则就是在网络层实现的。首先通过IP地址定位到子网络,然后加上MAC地址来定位到具体的设备。
(4)传输层
此时数据已经可以明确的传输到某一台电脑上, 如何定位到某一个进程?基于端口号。
端口号的范围: 0-65535。程序尽量不要指定端口为:0-1023,因为很可能会被系统所占用。
传输层中有TCP协议,UDP协议
UDP协议:使用这个协议的时候Head里只是记录端口号(根据端口号找具体的应用程序), 直接又把Data分成Head和Data。 简单,传输快,但是可能会丢包。因为传输的时候没有确认应答(只管传输,不管到底有没有传输成功)。
TCP:传输弱于UDP,不会丢包;有确认机制;在UDP基础上加了确认机制,即三次连接。
三次连接:第一次连接是客户端发送报文到服务器;
第二次连接是服务器接收到报文,然后向客户端发送一个报文信息;
第三次连接是客户端收到了服务器发来的报文,然后向服务器发送确认报文信息,此时双方 连接成功。
建立连接之后开始通信,如果不主动取消,会长期连接。
四次挥手 : 第一次挥手:客户端发送一个连接释放的报文信息,停止发送数据,关闭TCP连接,等待服务器的确认;
第二次挥手:服务器收到报文信息之后向客户端发送报文信息,表示自己收到了信息,进入等待关闭的状态,。
第三次挥手:如果此时服务器也想关闭连接了,向客户端发送报文信息,等待客户端的确认;
第四次挥手:客户端收到服务器关闭连接的报文信息之后也会回应一个报文信息,此时客户端进入时间等待状态,此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。
补充:MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存活的最长时间,超过这个时间报文将被丢弃。而2MSL的意思就是2倍的MSL的意思。
TCP的三次握手与四次挥手理解及面试题(很全面) 三次握手四次挥手相关面试题
(5)应用层
文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能
超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务
简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
远程登录协议(Telnet):用于实现远程登录功能。
补充协议
DNS协议
比如在浏览器输入域名的时候,通过DNS协议解析成IP地址和端口号,浏览器把请求的数据包通过网卡发送信息(根据子网掩码+IP计算—确定到某一个子网+Port),之后才是进行TCP三次连接等。