TCP与UDP

TCP/IP分层结构

层次结构功能
应用层应用程序可以使用各种各样的协议
传输层(TCP/UDP)确保发送数据可以到达目标主机,完成数据传输
网络层填写数据包地址,选择数据传输路径
数据链路层融合不同连接方式的的链路,屏蔽网络差异
物理层由具体的连接方式决定,无线和有线,光纤

TCP/IP工作方式

发送端

应用层编码后发送字符串数据
传输层将数据分包,加上标识头,序号等通用信息
网络层加上传输地址,选择最佳传输路径
数据链路层将数据封装并转换为二进制序列
物理层将二进制序列转换为物理信号,比如光,无线电波

接收端

应用层收到字符串,根据应用层协议进行解码
传输层根据附加信息进行数据组包,恢复原始应用层数据形态
网络层解析二进制序列,恢复传输层数据形态
数据链路层将二进制序列进行组装,恢复原始网络层数据形态
物理层将物理信号转换为二进制序列

深入理解网络层(IP层)

ip寻址

  • ip地址属于网络层地址,用于标识网络上的主机

ip路由控制

  • 控制数据如何到达目标主机(需要通过哪些路由进行转发)

无连接

  • 数据包根据ip地址在网络上传输

mac地址

  • 数据链路层使用的硬件地址。mac地址和网络无关,出厂时写入到网络设备中,当主机在网络上收到一个数据帧时,首先检查里面的mac地址是否和当前主机一致,如果一致进行下一步处理,如果不一致直接丢弃。

ip地址和mac地址

  • ip地址是动态的,不特定于某个硬件。
  • ip地址是网络层使用的地址。
  • mac地址是数据链路层使用的地址(用于确认目标网络中数据的主机)。
  • 路由器中记录了本网络中主机ip于mac地址的映射关系。

IP路由控制

为了将数据发给目标主机,所有主机都维护了一张路由表,路由表记录了ip数据包下一步该发给哪个路由器。

路由表获取方式

  • 手动创建路由表。
  • 通过特定协议创建。

IP数据转发

  • 尽力转发,不保证结果。
  • 转发时通过附加信息检查合法性,出现异常不会进行重发。
  • 以包为单位进行转发,不保证到达。

传输控制协议

TCP在协议上实现提供可靠数据传输

  • TCP中不存在数据包的概念,实现了流式数据传输
  • TCP内部有服务状态,能够精确的知道数据是否已经发送成功,是否已经被接收
  • TCP在行为傻姑娘可以进行阻塞控制。

TCP 三次握手

下面是TCP的头部信息,通过头部信息可以更清楚的认识三次握手过程。
TCP头

第一次握手

客户端创建了socket在调用connect之前一直处于CLOSED状态,当调用connect之后,客户端会发送一个SYN(SYN = 1,seq = J)报文,然后进入到SYN_SENT状态,服务器端收到后变为SYN_RECVD状态。

第二次握手

服务端对客户端做出应答(SYN = 1,ACK = 1,seq = K,ack = J + 1),
客户端在收到后转换为ESTABLISHED状态。

第三次握手

客户端向服务端做出应答(ACK = 1,ack = K + 1),服务端收到应答后由SYN_RECVD转换为ESTABLISHED状态。

TCP天生的缺陷(DDoS攻击)

  • 客户端收到SYNC,ACK后,不再回复最后的ACK信息
  • 这将导致服务端资源消耗,但是并不会进行实际通讯
  • 当多个傀儡客户端同时对服务端请求连接,服务端资源将被耗尽。

TCP 四次挥手

第一次挥手

客户端向服务器发送一个FIN(FIN = 1,seq = J)报文,告诉服务器不会再发送数据了,然后切换到FIN_WAIT1状态。

第二次挥手

服务器接收到FIN(FIN = 1,seq = J)报文, 对客户端做出应答(ACK = 1,seq = K,ack = J + 1),告知客户端已经收到消息,此时服务器由ESTABLISH状态转换为WAIT_CLOSE状态,客户端收到应答后转换为FIN_WAIT2状态。

第三次挥手

服务器发送FIN报文(FIN = 1,ACK = 1,seq = L,ack = J + 1),进入到LAST_ACK状态。客户端接收到后由FIN_WAIT2状态进入TIME_WAIT状态。

第四次挥手

客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送一个ACK应答报文段(ACK = 1, seq = J + 1, ack = L + 1),服务器收到后进入CLOSE状态,客户端等待2MSL后,也进入CLOSE状态。

UDP

特点:完全继承网络层的工作方式

  • 无连接,直接指定IP地址和端口即可发送数据
  • 监听固定端口,只要有数据统统接收
  • 不管网络情况,只要是数据统统可发送
  • 不关心数据是否到达

UDP使用场合:

  • 对数据不敏感,需要实时性的场合
  • 网络环境比较好的场合
  • 需要深度定制协议的场合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕咚.萌西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值