3.网络协议与tcp问题

 

1. 协议分层

应用层
与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。

表示层
这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。

会话层
它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。

传输层
这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。

网络层
这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。

数据链路层
它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。

物理层
OSI的物理层规范是有关传输介质的特性,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。

2. tcp与udp介绍与区别

***TCP(Transmission Control Protocol传输控制协议): *** 
是一 种面向连接的、可靠的、基于字节流的传输层通信协议,使用三次握手协议建立连接、四次挥手断开连接。
面向连接意味着两个使用TCP的应用(通常是一个 客户端和一 个服务器)在彼此交换数据包之前必须先建立一一个
TCP连接。在一一个TCP连接中,仅有两方进行彼此通信,广播和多播不能用TCP。TCP协议的作用是,保证数据通
信的完整性和可靠性,防止丢包。TCP把 连接作为最基本的对象,每-条TCP连接都有两个端点, 这种端点我们叫作
套接字(socket),端口号拼接到IP地址即构成了套接字。


***UDP(User Datagram Protocol用户数据报协议): *** 
是OSI(Open System Interconnection开放式系统互联)参考模型中- -种无连接的传输层协议,提供面向事务的
简单不可靠信息传送服务。UDP协议的主要作用是将网 络数据流量压缩成数据包的形式。

区别: 
1. TCP提供的是面向连接的、可靠的数据流传输; UDP提供的是非面向连接的、不可靠的数据流传输。
2. TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,按序到达; UDP尽最大努力交付,即不保证可靠交付。 
3. TCP面向字节流; UDP面向报文。 
4. TCP连接只能是点到点的; UDP支持-对一、一对多 多对一和多对多的交互通信。 
5. UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。 
6. TCP对系统资源要求较多,UDP对系统资源要求较少。TCP首部有20字节; UDP的首部只有8个字节。 
7. TCP的逻辑通信信道是全双工的可靠信道; UDP的逻辑通信信道是不可靠信道。

 

2.1 tcp 解释


. TCP协议简介 TCP是TCP/IP体系中非常复杂的一个协议,TCP最主要的特点有:
1. TCP是面向连接的运输层协议。应用程序在使用TCP协议之前,必须先建立TCP连接。在传递数据完毕后,必
须释放已建立的TCP连接。 
2. 每一条TCP连接只能有两个端点,只能说点对点的。 
3. TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。 
4. TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓
存和接收缓存,用来临时存放双向通信的数据。 
5. 面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程
序和TCP的交互是一-次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连 串的无结构 的
字节流。TCP并不知道所传送的字节流的含义。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所
发出的数据块具有对应大小的关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字 节流完全
一样。 当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。

优点:
可靠传输
流量控制
拥塞控制

2.2 tcp 问题

数据发送问题:
tcp在发送数据的时候因为存在数据缓存的关系,对于数据在发送的时候在 短短时时间间内内 如果连续发送很
多小的数据的时候就会有可能一次性一起发送,还有就是对于大的数据就会分开连续发送多次

如上的情况就是多份数据变成了一份然后进行发送给了客服端,这种情况用一种专业的词:粘包
所谓粘包就是,一个数据在发送的时候跟上了另一个数据的信息,另一个数据的信息可能是完整的也可能是不完整的;

出现的原因:
出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引|起的粘包是由TCP
协议本身造成的, TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。 若连续几次发送 
的数据都很少,通常TCP会根据优化算法把这些数据合成- -包后- 次发送出去,这样接收方就收到了粘包数
据。
接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据
放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一-包数据到达时前一-包数据尚未被用户进程取 走,
则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收
缓冲区取数据,这样就一-次取到了 多包数据。
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值