网络通信与tcp/ip协议
# 网络通信与tcp/ip协议
网络协议
-
计算机网络按照覆盖范围分为局域网,城域网,广域网,也可以按照拓扑结构分为总线型,环型,星型,网状,也可以按照信息交换方式分为电路交换,报文交换,报文分组交换。
-
计算机发展历史:
1、诞生阶段,20 世纪 60 年代中期之前的第一代计算机网络是以单个计算机为中心的
远程联机系统。
2、ARPANET,多个主机通过通信线路互联起来。60 年代初。当时,美国国防部为了保
证美国本土防卫力量和海外防御武装在受到前苏联第一次核打击以后仍然具有一定的生存
和反击能力,认为有必要设计出一种分散的指挥系统;它由一个个分散的指挥点组成,当
部分指挥点被摧毁后,其它点仍能正常工作,并且在这些点之间能够绕过那些已被摧毁的
指挥点而继续保持联系。这个设计出发点很重要,理解了它,就能够理解为何后面要学习
的 TCP 要这么设计。为了对这一构思进行验证,1969 年,美国国防部国防高级研究计划署
(DOD/DARPA)资助建立了一个名为 ARPANET(即"阿帕网")的网络,将多个大学的计算机主机
联接起来,位于各个结点的大型计算机采用分组交换技术,通过专门的通信交换机和专门的
通信线路相互连接。E-mail、FTP 和 Telnet 在 ARPANET 上已经诞生。
3、开放性的标准化体系结构,OSI 诞生。ARPANET 兴起后,计算机网络发展迅猛,各大计
算机公司相继推出自己的网络体系结构及实现这些结构的软硬件产品。由于没有统一的标准,
不同厂商的产品之间互联很困难,人们迫切需要一种开放性的标准化实用网络环境,这样应
运而生了两种国际通用的最重要的体系结构, 为了实现网络设备间的互相通讯,ISO 和 IEEE
(电气和电子工程师协会,是世界上最大的非营利性专业技术学会)相继提出了 OSI 参考模
型及其 TCP/IP 模型。由于 TCP/IP 尽早地制定了可行性较强的协议,提出了应对技术快速革
新的协议,并及时进行后期改良的方案,因此打败了 OSI 模型,成为了事实上的标准。
4、Internet 互联网
20 世纪 90 年代至今的第四代计算机网络, 就是我们所熟知的 Internet 互联网。
既然网络是很多的计算设备(电脑、手机等等)连接在一起的,这些计算设备来自不同
的公司,有不同的体系结构,相互之间如何通信呢?这就好比我们的语言,中国地广人多,
地方性语言也非常丰富,而且方言之间差距巨大。A 地区的方言可能 B 地区的人根本无法听
懂,所以要为全国进行沟通建立一个语言标准,这就是我们的普通话的作用。计算机网络协
议同我们的普通话一样,帮助我们的计算机之间进行沟通。
计算机网络体系结构
1. osi七层模型:分别的名字以及对应的作用(物数往传会表应)
1. 物理层:网卡之类
2. 数据链路层:提供介质访问,如网卡协议
3. 网络层:ip
4. 传输层:tcp
5. 会话层,表示层,应用层。。。如下,没什么代表的东西
-
tcp/ip模型,或者叫五层模型:会话层,表示层,应用层:一般放一起,组成应用层
-
tcp/ip协议族:transmission control protocol/internet protocol,由网络层ip协议和传输层tcp协议组成,利用ip进行通信,所用的协议统称,其实也会用到其他层的不同协议,其实是一个协议家族,是互联网基础通信架构
-
tcp/ip网络传输数据,发送的时候层层加头,接受的时候层层去头
-
ip的含义 internet protocal address,互联网协议地址
-
为什么端口号是65535:tcp的协议报文头分别有16位二进制存储源地址和目标地址,所以端口数量是2^16,由于0号端口有特殊性,如下图
- 一台主机只能保持65535个通信吗?:不是的,根据tcp通信四元组(源ip,目标ip,协议号(固定值)目标端口,源端口),针对服务端可变项为 源ip 源端口 2^32 * 2^16,针对客户端在这个基础上源端口也可以变再乘以 2^16 ,主要就是考虑四元组的变化
tcp特性
1. tcp是面向连接的通信协议,通过三次握手建立连接;是一种可靠的数据流服务,采用超时重传,超时重传最重要的是rto(retrasmission timeout)的时候选择,超时的市场需要根据网络情况动态调整,采样统计一个数据包发送到接受回复这段时长来动态设置超时时长。rtt(round-trip-time),然后再根据这个RTT通过各种算法去确定重传超时值;tcp通过滑动窗口控制接收流量,来限制对方发送数据;通信是全双工,通信的双方可以同时传输数据;
-
tcp的三次握手: 注意应答报文与请求报文
-
客户端将请求报文的SYN=1,seq=随机数J,将该数据包发送给服务端,客户端进入SYN_SENT状态;2. 第二次握手,服务端收到请求报文看到SYN=1知道客户端请求建立连接,服务端将应答报文SYN=1,ACK=1,ack=J+1,sql=随机数K,将数据报发送给客户端,服务端进入SYN_RCVD状态 3: 第三次握手: 客户端收到应道报文后,检查ackJ+1,ACK1,ack=k+1如果正确,将请求报文ACK=1,然后把数据包发送给服务端,服务端检查 ackk+1,ACK1,如果正确建立连接,客户端服务端进入ESTABLISHED状态。就可以
-
-
四次挥手: