浅谈TCP和UDP网络编程协议

一、什么是网络编程协议
首先网络编程协议的目的是为了方便使用与管理,避免出现网络拥堵。倘若没有固定协议,就有可能会出现,如下图的情况,完全无法进行沟通,放在网络上就会出现网络堵塞,所以我们必须制定一些方案和协议来统一。

沟通不便
二、分层模型

  1. 网络分层架构

         为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务,本层服务的实现细节对上层屏蔽。
    

分层模式
越下面的层,越靠近硬件,越上面的层,越接近用户。主要四层模式为:应用层,运输层,网络层,链路层。

2)链路层

链路层指定的就是mac地址,每台电脑出厂时配置的网卡对应地址都会不同,这个是一开始就决定好的,无法改变。

3)网络层

网络层主要指的就是ip地址,通过用户指的ip地址进行相对应的访问操作(ip由来等细节不做细讲,自行百度)

4)运输层

通过每个应用不同的端口号进行传输,端口号范围是从0到65535,每个端口都对应电脑上不同的进程,windows用户可以在命令提示符中输入netstat -ano看到,在本地地址冒号后面,即可看见,Linux中输入ps -auo即可,一个端口号只能服务一个进程。其中80端口分配给HTTP服务,21端口分配给FTP服务。就类似固定电话,10010,10086等。

windows查看进程端口
5) 应用层

经过链路层,网络层,传输层,最后就是通过前面是三个来确认到最后需要传输到的应用中去

传输示意图
三、UDP
1)udp简介
UDP是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

2)udp特点

  • 端到端
    是一个区分一台指定计算机上不同应用程序的传送协议。
  • 无连接
    即使用UDP协议进行数据传输时,不需要事先建立连接,也不需要在通信结束后通知,意思就是,我发消息给你,收不收的到和我无关。并且通信内容只包含消息本身,因此UDP的开销非常低。
  • 面向消息
    发送消息时不会将消息进行切割发送,回将消息一次打包独立发送,每个消息都是独立的,不会出现多个消息一起发送的情况。
  • 尽力而为
    UDP提供与IP一样的尽力而为语义的服务,但是这种服务可能会导致消息的丢失,重复,延迟,乱序,在传输中数据比特还有可能被损坏,所以UDP只能满足声音或视频等能容忍传递错误的应用
  • 任意交互
    支持与多个应用进行交互,或者单独交互
  • 独立于操作系统
    UDP提供了一种标识应用的手段,这种手段不依赖于本地操作系统的标识符。

四、TCP
1)tcp简介
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通信需要经过创建连接、数据传送、终止连接三个步骤。TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中打电话。

2)tcp特点

  • 面向连接
    使用服务前,必须先和目标节点建立连接,然后使用连接传输数据

  • 点到点通信
    每一条TCP连接都恰好有两个端点

  • 完全的可靠性
    能够保证通过一条连接发送的数据将会完整,按序,准确的被传递

  • 全双工通信
    允许一条连接的两端任意时刻发送数据,不限制发送端和接收端

  • 流接口
    允许一条连接中连续的发送字节序列,TCP不会将数据划分为记录或者消息,也不保证实际发送的数据段大小与发送应用要传输的数据大小相同

  • 可靠的连接启动
    能够保证两个应用程序的安全连接,在建立连接时会有三次的消息交换,通知对方可以进行连接

  • 优雅的连接断开
    在关闭连接前会确保所有的数据传输完毕,并且双方同意的情况下断开连接

  • 拥塞机制

    1. 拥塞发送的时候让中间系统(路由器)通知发送方
    2. 使用增加延迟和分组丢失来估计拥塞状况
  • 适应性重传
    如果出现丢包的情况,TCP会根据前面记录的响应时间预估重传时间,一般会比响应时间大的时间

五、TCP和UDP的优缺点
1)tcp的优点
1.1 TCP采用发送应答机制

          TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功。

1.2 超时重传

          发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

1.3 错误校验

          TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

1.4 流量控制和阻塞管理

          流量控制用来避免主机发送得过快而使接收方来不及完全收下。

2)udp的优点

          传输速度快,消耗低

3)tcp不同与udp

面向连接(确认有创建三方交握,连接已创建才作传输。)

有序数据传输

重发丢失的数据包

舍弃重复的数据包

无差错的数据传输

阻塞/流量控制
  1. 优劣

    udp在传输方面比tcp更胜一筹,但是不能保证稳定到达用户,tcp传输慢,但是能保证消息传输到用户,但是容易丢包,导致数据被抓包

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值