h3c下一页 tcpip协议( 二 )


参考资料:百度百科——TCP/IP
http-tcpip协议 为了简化网络的复杂度,网络通讯的不同方面被分解为多层次的结构,每一层只与紧挨着的上层或者下层进行交互,将网络分层,这样可以修改,甚至替换每一层的软件,只要层于层之间的接口保持不变,就不会影响到其他层.
网络分层的两种模型
OSI(Open System Interconnection Reference Model):开放系统互联参考模型
TCP/IP 协议族
超文本传输协议(HyperText Transfer Protocol HTTP)
一种无状态的,已请求/应道方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的草文本信息系统灵活互动.
HTTP协议的请求报文和响应报文的结构基本相同,有3部分组成
面向连接的,可靠的,基于字节流的传输层通讯协议
特点
?基于连接的:数据传输之前需要建立连接
?全双工:双向传输(客户端和服务端传输时双向)
?字节流:不限制数据大小,打包成报文段,保证有序接受,重复报文自动丢弃(在实际环境中,会出现tcp在传输中并不只会一条线路,可能有多条线路传输数据,本地是有序的发送,传输过程中运营商会分派很多线路,传输的数据被切割成多个片段,由不同的tcp连接传输,可能导致接收端有乱序 重复的数据产生,tcp接收端会重新排序和去重)
?流量缓冲,:解决双发处理能力的不匹配(发送端能力强接收端能力弱,就需要流量缓冲,将消息放到队列里一点点处理)
?可靠性传输:保证可达,丢包时通过重试机制实现可靠性(如果网络抖动造成的重试,tcp接收端去重,每次发送完数据会接受到接收端传来的反馈,如果没有则重复发送)
?拥塞控制:防止防落出现恶行的拥塞
?TCP的3次握手
?Tcp的报文
1)源端口:sourceport 源端口和IP地址的作用是标识报文的返回地址 。端口是一般是客户端随机生成
2)目的端口:destport端口指明接收方计算机上的应用程序接口 。服务端端口比如80 8080
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接 。
(sequence number/acknowledement number)是TCP可靠传输的关键部分 。序号是本报文段发送的数据组的第一个字节的序号 。在TCP传送的流中 , 每一个字节一个序号 。e.g.一个报文段的序号为300 , 此报文段数据部分共有100字节 , 则下一个报文段的序号为400 。所以序号确保了TCP传输的有序性 。确认号 , 即ACK , 指明下一个期待收到的字节序号 , 表明该序号之前的所有数据已经正确无误的收到 。确认号只有当ACK标志为1时才有效 。比如建立连接时 , SYN报文的ACK标志位为0 。Tcp每一次传输是块的并不是一次全部传送,序号来排序,序号和确认号保证传输的可靠性.
4bits 。由于首部可能含有可选项内容 , 因此TCP报头的长度是不确定的 , 报头不包含任何任选字段则长度为20字节 , 4位首部长度字段所能表示的最大值为1111 , 转化为10进制为15 , 15*32/8 = 60 , 故报头最大长度为60字节 。首部长度也叫数据偏移 , 是因为首部长度实际上指示了数据区在报文段中的起始偏移值
1)URG:紧急指针标志 , 为1时表示紧急指针有效 , 为0则忽略紧急指针 。
2)ACK:确认序号标志 , 为1时表示确认号有效 , 为0表示报文中不含确认信息 , 忽略确认号字段 。SYN=1和ACK=1是服务端返回应答报文,三次握手的第二部.
3)PSH:push标志 , 为1表示是带有push标志的数据 , 指示接收方在接收到该报文段以后 , 应尽快将这个报文段交给应用程序 , 而不是在缓冲区排队 。
4)RST:重置连接标志 , 用于重置由于主机崩溃或其他原因而出现错误的连接 。或者用于拒绝非法的报文段和拒绝连接请求 。
5)SYN:同步序号 , 用于建立连接过程 , 在连接请求中 , SYN=1和ACK=0表示该数据段没有使用捎带的确认域 , 而连接应答捎带一个确认 , 即SYN=1和ACK=1 。当SYN=1和ACK=0就是客户端发送报文用来建立连接.
6)FIN:
finish标志 , 用于释放连接 , 为1时表示发送方已经没有数据发送了 , 即关闭本方数据流 。四次挥手中用来确认即将断开连接的标识符.
滑动窗口大小 , 用来告知发送端接受端的缓存大小 , 以此控制发送端发送数据的速率 , 从而达到流量控制 。窗口大小时一个16bit字段 , 因而窗口大小最大为65535 。

秒懂生活扩展阅读