计算机网络 5.6-5.8 TCP/UDP
来看看传输层的位置
要点:
传输层是为两个应用进程提供端到端的通信
传输层的复用和分用
传输层与应用层就是端口 (传输层的应用访问点 TSP)
传输层与网络层之间就是协议字段(网络层的 NTSP)
端口(port)
一共可以有 2^16 个
服务器比作房子
而把端口比作通向不同房间的门、
端口扫描可以看好目标主机
套接字
插口 或者 套接口 socket
显得比较冗余了
先来看一下UDP协议
用户数据报协议
- 端口的复用和分用
- 差错控制技术
若果是UDP进行分片。那么只有第一个会有UDP
UDP的首部(四个字段,每个字段各占两个字节)
校验和字段:计算过程下一节介绍
UDP的数据(不讲)
UDP的差错控制方法
有一个首部校验和(只校验首部)
节约了时间(尽力而为的思想)给高层留下了数据是否可靠的问题
高层可以自己选择
发送时计算一次
接受时再计算一次
包含三个部分
首部,数据,伪首部
增加了伪首部的方法
要对完整点的通信双方的五元组的校验
计算校验和
数据长度是奇数的话 如果是偶数个就不填充了
校验和置零
反码求和再取反
DNS DHCP 都是使用了UDP协议
报文简单,实时应用
TCP协议
双方建立TCP的有限状态机
TCP不提供广播或多播的服务
TCP报文段的首部格式
前20个字节是固定的
序号
TCP传送点的报文可以看成连续的字节流
数据部分的第一个字节的序号确认号
期望收到的下一个报文段首部的 序号字段的值数据偏移(四字节为单位)
+标记位
URG: urgent 本报文中包含紧急数据
ACK : 确认号字段有效
PSH : 应尽快将报文给应用程序
RSH : 表明TCP链接出现严重错误,必须重新建立连接
SYN : (需要消耗序号)同步位
FIN :需要释放链接(也消耗序号)
窗口:允许发送方发送的数据量
校验和字段 TCP的 首部 数据 伪首部
TCP伪首部协议字段是6
- 紧急指针
在URG置1时有效
紧急数据的字节数
选项(长度可变,4字节的整数倍,MSS(TCP数据部分的最大长度): TCP报文段长度-TCP首部长度,)
TCP的链接建立过程
SYN
FIN
需要消耗
ACK不消耗
三次握手
通信双方协商报文数据载荷最大长度
MSS值表示后续数据的最大值
避免
分布式的拒绝服务攻击
攻击方式的问题就出在三次握手
SYN flood 攻击
TCP是面向链接的传输层协议
TCP链接释放的过程
TCP可靠传输
序号确认机制
若果没有差错,只是没有按序号
(1) 将不按需的报文段丢弃
(2) 先存到缓冲区 以待后用
超时重传机制
在规定的时间内没得到ACK应答,就取出来重新发送
RTO(retransfomationtimeout)
过大或者过小都不好
RTO=RTT+4*RTTD
RTT:端到端的传输时延
RTTD:传输往返时延的偏差值
RTT的更新方法,在传输层是非常困难的事情
TCP采取了一种自适应的算法
发出的时间到受到确认的时间,在加权平均一下
典型取7/8
TCP中的定时器
(1)重传定时器
在规定时间内没有受到应答就重发
(2)持续定时器
缓冲满了发一个窗口值是0的,
有了缓冲,就发窗口更新报文(然而丢了)
这下晚秋了
超时了,就发一个探寻的消息
(3)保活定时器
查看通信的另一方是否在线,一般设置2个小时
发出10个都没有应答就终止
(4)时间等待定时器
关闭后,一般设置为某一报文寿望寿命的2倍
asa
端到端的流量控制
通过选项通知对方
可以随时动态的调整窗口
由接受端控制发送端
TCP的拥塞控制机制
造成核心的拥塞
传输层的TCP当中实现的
衡量网络的拥塞程度
假定接受窗口足够大
四种拥赛控制技术
ssthresh
是为了防止因为数据过大出现拥塞
慢启动在开始的数值比较小
设定一个门限值
实例复习
题:
解答
(1)
(2)
(3)
第一个SYN
第二个SYN ACK
第三个ACK
分析的正确性
小结
计算机网络 5.6-5.8 TCP/UDP的更多相关文章
- TCP/UDP详解
转载:http://www.cnblogs.com/visily/archive/2013/03/15/2961190.html, 作者:望梅止渴 相关: HTTP协议详解 深入理解HTTP协议 T ...
- High Performance Browser Networking - TCP UDP TLS
延迟 定义和标准延迟 延迟简单地说,它是一种转移或信息包从起点到终点,所花费的时间. 延迟=发送延迟+传播延迟+处理延迟+排队延迟: Propagation delay 传播时延 传播时延这个概念.是 ...
- 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...
- TCP&UDP&Socket讲解(上)
这两天我将整理TCP&UDP&Socket,大约花大家10-15分钟之间,希望本篇文章让大家对TCP使用的理解提高一个层次. 建议大家拿出纸和笔,画一下!!! 一.TCP 1. TCP ...
- 计算机网络、OSI模型、TCP/IP族
一.计算机网络分类 1.按通信距离分类: 局域网:LAN,10m-1000m,房间.校园: 城域网:MAN,10km,城市: 广域网:WAN,100km以上,国家.全球. 二.OSI(Open Sys ...
- TCP/UDP对比总结
目录 1 TCP-UDP对比 2 UDP介绍 3 TCP介绍 3.1 可靠传输的原理和实现 3.1.1 可靠传输原理 3.1.2 可靠传输实现 3.2 TCP面向连接管理 3.2.1 建立连接 3.2 ...
- 《TCP/IP - TCP/UDP》
一:概述 - 由于 IP 的传输是无状态的,IP 提供尽力服务,但并不保证数据可以到达主机. - 所以,数据的完整性需要更上层的 传输层来保证.TCP和UDP 均属于 传输层. 二:UDP - 特点 ...
- TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- TODO:Golang语言TCP/UDP协议重用地址端口
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...
随机推荐
- MFC 多屏显示
概念 HMONITOR : 显示器句柄. 有效的显示器,该值不为空. 当WM_DISPLAYCHANGE 心消息发送的时候, 任何小时起都有可能被移除, 所以应用程序时刻检查全部的HMONITORS是 ...
- Java基础知识(多线程和线程池)
新建状态: 一个新产生的线程从新状态开始了它的生命周期.它保持这个状态直到程序 start 这个线程. 运行状态:当一个新状态的线程被 start 以后,线程就变成可运行状态,一个线程在此状态下被认为 ...
- C/C++获取系统当前时间
C/C++获取系统当前时间 C库中与系统时间相关的函数定义在<time.h>头文件中, C++定义在<ctime>头文件中. 一.time(time_t*)函数 函数定义如 ...
- Navicat12.1.7破解教程
https://blog.csdn.net/qq_39344689/article/details/85161342
- UITableViewHeaderFooterView can't change custom background when loading from nib
down voteforite I've created a custom UITableViewHeaderFooterView and successfully load from nib int ...
- CentOS 6.5 usb安装
我只说一下将CentOS安装作为服务器的情况,但是适用于普遍的CentOS安装过程,首先下载CentOS的安装镜像文件,有这么几种:CentOS-6.5-x86_64-LiveCD.CentOS-6. ...
- DSP日志打印 LOG_printf
LOG_printf 依托BIOS环境,需要引用下列头文件: #include <std.h> #include <log.h> 并且,要在.tcf环境中添加一个LOG ...
- 给docker里的php安装gd扩展
docker官方镜像为安装php扩展封装了函数,为开发者提供了很大的便利,以下以Dockerfile的形式演示安装gd扩展的方法,安装gd扩展需要安装几个依赖包,安装依赖包使用系统命令,安装命令根据基 ...
- 入门servlet:request获取请求头数据
@WebServlet("/RequestDemo2") public class RequestDemo2 extends HttpServlet { protected voi ...
- php5.3中namespace的说明,帮助初次接触namespace的phper快速理解
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀,但是方法名变的很长 ...