单页面网站好优化吗,网页设计分几个步骤,如何看网站的建站时间,商务网站的推广方法有哪些目录
1. TCP/IP协议栈
2. TCP原理
2.1 TCP套接字中的I/O缓冲
2.2 TCP工作原理
2.2.1 三次握手#xff08;连接#xff09;
2.2.2 与对方主机的数据交换
2.2.3 四次握手#xff08;断开与套接字的连接#xff09; TCP#xff08;Transmission Control Protocol传输控…目录
1. TCP/IP协议栈
2. TCP原理
2.1 TCP套接字中的I/O缓冲
2.2 TCP工作原理
2.2.1 三次握手连接
2.2.2 与对方主机的数据交换
2.2.3 四次握手断开与套接字的连接 TCPTransmission Control Protocol传输控制协议对数据传输过程的控制。
1. TCP/IP协议栈 TCP/IP分为四层
链路层物理层物理链接领域标准化的结果专门定义LAN、WAN、MAN等网络标准通俗点说就是硬件之间的物理连接层。IP层IP层功能主要是确定传输数据的路径但IP本身是面向消息不可靠的可能会发生数据丢失或错误的问题。TCP/UDP层(传输层)TCP则可以解决IP层数据丢失或错误的问题赋予不可靠的IP协议可靠性。 如图所示是TCP简单的功能会确认数据包是否到达。应用层程序员编写软件过程中根据程序特点决定服务器端和客户端之间的数据传输规则。
2. TCP原理
2.1 TCP套接字中的I/O缓冲
问如果服务器端一次性传输了40字节而客户端却是通过4次read函数每次读取10字节的方式来接收数据那么当客户端第一次接收了10字节的数据剩下30字节的数据去哪了呢
答剩下30节的数据都在I/O缓冲里。
实际上write函数调用后并不是马上进行数据传输的read函数也不是马上进行数据读取的而是如图 总结在write函数执行时会先将数据移动到输出缓冲里在适当的时候再将数据传送到对方的输入缓冲里然后对方再通过read函数从输入缓冲里读取数据。
I/O缓冲有如下特性
I/O缓冲在每个TCP套接字中单独存在。I/O缓冲在创建套接字时自动生成。即使关闭套接字也会继续传输输出缓冲中遗留的数据。关闭套接字将丢失输入缓冲中的数据。
问如果客户端输入缓冲为50字节服务器端却传输了100字节那么会怎么办
答TCP会控制数据流不会发生超过输入缓冲大小的数据传输。
TCP中有滑动窗口协议会在传输前告知对方套接字己方可以接收多少字节的数据。所以TCP不会因为缓冲溢出而丢失数据。 write函数返回的时间点 write函数和Windows的send函数不会在完成向对方主机的数据传输时返回而是在数据移动到输出缓冲时就返回。然后TCP会保证对输出缓冲中数据的传输。 2.2 TCP工作原理
以下原理保证了TCP的数据传输是可靠的有序的基于连接的。
2.2.1 三次握手连接 套接字是以全双工方式工作的也就是说它可以双向传输数据。
以上可以解释成如下
SYN(Synchronization)表示收发数据传输的同步消息。
ACK命令正确应答确认字符acknowledgement character。
SEQ序列。 收发数据前向数据包分配序号并向对方通报此序号 这样可以在数据丢失时马上查看并重传丢失的数据包防止数据丢失。
三次握手后主机之间彼此就绪准备数据交换。
2.2.2 与对方主机的数据交换 主机A向主机B发送100个字节的数据数据包的序号为1200主机B回复给主机A序号为1301的数据包ACK应答为什么是序号为1301的数据包
因为ACK号SEQ号传递的字节数1这样如果ACK号不是120010011301的话那么久说明传递的字节数有丢失就可以通知对方重传加一是为了告知对方下次要传递的SEQ号。
这之间如果发生了错误如图 当主机A发送SEQ1301给主机B时主机B没有接收到不会发送ACK应答主机A过了一段时间没有接收到主机B传来的应答那么就会重传。主机A的TCP套接字会启动计时器等待ACK应答如果超时则重传。
2.2.3 四次握手断开与套接字的连接 FIN断开连接双方各发送一次FIN消息后断开连接。
含义和上述三次握手的差不多这里主机B向主机A传递了两次ACK5001是因为主机B向主机A发送第一次ACK后会等待一段时间看主机A是否还有数据要传给主机B没有了则会传递第二次ACK数据并设置FIN消息。