计算机网络浅析
LAN: 局域网 local Area Network
WAN: 广域网 Wide Area Network
WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN
OSI 七层协议 : TCP/IP协议: 网络协议标准
7 应用层 4 应用层 HTTP,FTP , SMTP
6 表现层 POP3 NFS SSH
5 会话层
=============================================
4 传送层 3.传送层 TCP UDP
=============================================
3 网络层 2 网络层 IP ICMP
=============================================
2 链接层 LAN WAN ARP
1 实体层 1 链接层
=============================================
TCP/IP网络协议由OSI七层协议简化而来
TCP/IP 生命周期
准备阶段 :
在浏览器输入网址按下enter后,网址列与相关数据会被包裹成一个数据 向应用层传递
LAN: 局域网 local Area Network
WAN: 广域网 Wide Area Network
WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN
OSI 七层协议 : TCP/IP协议: 网络协议标准
7 应用层 4 应用层 HTTP,FTP , SMTP
6 表现层 POP3 NFS SSH
5 会话层
=============================================
4 传送层 3.传送层 TCP UDP
=============================================
3 网络层 2 网络层 IP ICMP
=============================================
2 链接层 LAN WAN ARP
1 实体层 1 链接层
=============================================
TCP/IP网络协议由OSI七层协议简化而来
TCP/IP 生命周期
准备阶段 :
应用程序阶段 在浏览器输入网址按下enter后,网址列与相关数据会被包裹成一个数据 向应用层传递
============================================
4 应用层 HTTP,FTP , SMTP POP3 NFS SSH 应用层收到数据后,使用HTTP 通信协议 ,将来自浏览器的数据包起来,给予一个应用层表头,传递给传送层
=============================================
3.传送层 TCP UDP 传送层收到数据后 ,将数据丢入TCP 封包内,并给予一个TCP封包的表头,向网络层传递
=============================================
2 网络层 IP ICMP 网络层收到数据后,将TCP封包 包进IP的封包内,给予一个IP表头,向链接层传递
============================================
1 链接层 IP根据CSMA/CD 以太网协议标准 包裹进mac 讯框内,给予mac表头 等待转换为位串,利用传输媒体传送到远程主机
UDP: 用户数据报协议(User Datagram Protocol)。UDP协议是一个面向无连接的协议。传输数据时,不需
要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个
数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应
用中,例如视频会议、QQ聊天等。
相同点:tcp和udp都是传输层协议
不同点:udp 无连接协议,大小有限制,速度快,不靠协议,易丢失
tcp 面向连接协议,故需要三次握手 所以安全,应用广泛,可用来下载,浏览网页
3次握手:
TCP封包3次握手:
正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
其中在TCP连接和断开连接过程中的关键部分如下:
源端口号:即发送方的端口号,在TCP连接过程中,对于客户端,端口号往往由内核分配,无需进程指定;
目的端口号:即发送目的的端口号;
序号:即为发送的数据段首个字节的序号;
确认序号:在收到对方发来的数据报,发送确认时期待对方下一次发送的数据序号;
SYN:同步序列编号,Synchronize Sequence Numbers;
ACK:确认编号,Acknowledgement Number;
FIN:结束标志,FINish;
step1. 由客户端向服务器端发起TCP连接请求。Client发送:同步序列编号SYN置为1,发送序号Seq为一个随机数,这里假设为X,确认序号ACK置为0;
step2. 服务器端接收到连接请求。Server响应:同步序列编号SYN置为1,并将确认序号ACK置为X+1,然后生成一个随机数Y作为发送序号Seq(因为所确认的数据报的确认序号未初始化);
step3. 客户端对接收到的确认进行确认。Client发送:将确认序号ACK置为Y+1,然后将发送序号Seq置为X+1(即为接收到的数据报的确认序号);
为什么是三次握手而不是两次对于step3的作用,假设一种情况,客户端A向服务器B发送一个连接请求数据报,然后这个数据报在网络中滞留导致其迟到了,虽然迟到了,但是服务器仍然会接收并发回一个确认数据报。但是A却因为久久收不到B的确认而将发送的请求连接置为失效,等到一段时间后,接到B发送过来的确认,A认为自己现在没有发送连接,而B却一直以为连接成功了,于是一直在等待A的动作,而A将不会有任何的动作了。这会导致服务器资源白白浪费掉了,因此,两次握手是不行的,因此需要再加上一次,对B发过来的确认再进行一次确认,即确认这次连接是有效的,从而建立连接。
对于双方,发送序号的初始化为何值有的系统中是显式的初始化序号是0,但是这种已知的初始化值是非常危险的,因为这会使得一些黑客钻漏洞,发送一些数据报来破坏连接。因此,初始化序号因为取随机数会更好一些,并且是越随机越安全。