传输层(从开始到结束详解)
传输层定义了主机应用程序之间端到端的连接性,传输层中最为常见的两个协议分别是传输控制协议TCP(Transmion Control
Protocol)和用户数据包协议UDP(User Datagram Protocol)
传输层概述:传输层提供端到端的连接
既然通过端连接,自然有端口号。
端口号:Port
协议 | 端口号 |
---|---|
FTP | 20,21 |
HTTP | 80 |
Telnet | 23 |
SMTP | 25 |
端口号用来区分不同的网络服务
端口号范围 | 端口类别 |
---|---|
0到1023 | 公认端口 |
1024到49151 | 注册端口 |
49152到65535 | 私有或动态端口 |
在平时一些局域网内共享文件时 也可以通过更改端口号去放一些私密文件等 目前我们电脑默认端口是3389 也可以不输
但是在电脑里更改过端口号之后 别人在连接你电脑时就需要加上端口号才可以连接 当我们访问服务器时 源端口是随机的 目标端口一般是固定的
传输层协议:
协议 | 备注 |
---|---|
TCP | Transmion Control Protocol ,传输控制协议,可靠的协议,效率低,类似于打电话,需要双方回复 |
UDP | User Datagram Protocol ,用户数据 报协议 不可靠协议,效率高 类似于群聊,单方发送不需要回复 |
TCP和UDP报头区别 我们用科来抓包来分析
TCP报头
UDP报头
我们需要去了解熟悉TCP中序列号,确认号,标志位和窗口等
TCP是一种面向连接的传输层协议,提供可靠的传输服务,当A方向B方发起请求时,需要B方回应
SYN(标志位)ACK(确认位)seq(序列号)win(窗口大小 (可发送字节数))
当刚建立连接时 会被赋予一个序列号 然后 刚开始确认号没有 然后开始下一个序列号 回复时 回应的确认号是发送时的序列号+1 然后再新增一个序列号 再开始下一个序列号,如此循环 当会话确认时,序列号则是加上旁边的字节大小来作为传输 ,这样一去一回再一去就是典型的TCP三次握手
当对方回复很多数据时并不一定是所有的包都会回复 ,但是回复的一定是对方发的最后一个包,不然就确认不了数据
当发送的数据过大时,服务器发现自己的存储已满就会自己处理数据,并且告诉对方还有多少字节大小可以发送,这是对方再根据字节大小去选择性发送,如果还是发送很大的数据时,就会发生堵塞
最后结束时,发送fin 也就是完成的意思,我们发起fin请求第一次之后对方接收到后,对方发起序列号,之后对方再发起fin请求,然后我们再发送序列号。这就是TCP结束四次挥手。
建立连接必定有三个数据包 有时有掉包或连接不成功还有可能多 结束时正常都是四个数据包
UDP协议
占用资源小,效率高,但是会有丢包情况,即没有人回复 一般语音 视频一些流量时,通常使用UDP作为传输层协议