我是大白(●—●),这是我开始学习记录大白Java软件攻城狮晋升之路的第二十四天到三十天。国庆给自己放了个小长假,虽然自己也刚休息完两个月哈哈哈。
文章目录
一、传输层概述
1. 传输层
2. 传输层的两个协议
3. 传输层的寻址与端口
Socket:
二、UDP协议
1. 用户数据报协议UDP概述
应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。
2. UDP首部格式
3. UDP校验
在发送端:
- 填上伪首部
- 全0填充检验和字段
- 全0填充数据部分(UDP数据报要看成许多4B的字串接起来)
- 伪首部+首部+数据部分采用二进制反码求和
- 把和求反码填入检验和字段
- 去掉伪首部,发送。
在接收端:
- 填上伪首部
- 伪首部+首部+数据部分采用二进制反码求和
- 结果全为1则无差错,否则丢弃数据报/交给应用层附上出差错的警告。
三、TCP协议特点和TCP报文段格式
1. TCP协议的特点
传输的格式:
2. TCP报文段首部格式
六个控制位:
- 紧急位URG:URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
- 确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
- 推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
- 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
- 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
- 终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接
窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6。
紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数。
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认…
四、TCP连接管理
1. TCP连接管理
2. TCP的连接建立
假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器中的TCP建立一条TCP连接:
3. SYN洪泛攻击
SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的符性,就定二火推于o义个4TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器迟回ACK后,孩攻击石就个刈其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务番仅个到再确认的话,还会重复发送ACK给攻击者。这样史加会限费服务莽的贫源。以古有从刈报分器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
4. TCP的连接释放
参与一条TCP连接的两个进程中的任何一一个都能终止该连接,连接结束后,主机中的“资源" (缓存和变量) 将被释放。
五、TCP可靠传输
可靠是指保证接收方进程从缓存区读出的字节流与发送方的字节流是完全一样的。
1. 序号
2. 确认
3. 重传
六、TCP流量控制
流量控制:让发送方慢点,要让接收方来得及接收。
TCP利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
若窗口仍然是0,那么发送方就重新设置持续计时器。