应用层和传输层_byseyOrd

传输层  

    传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,再通过端口来标识主机上的应用程序。

  端口即应用程序与网卡关联的编号。

  传输层功能:建立端口到端口的通信,补充:端口范围0-65535,0-1023为系统占用端口

  传输层有两种协议,TCP和UDP

1、TCP协议
  可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。(流式协议,不间断发送)

  TCP可靠的缘故:只要不得到确认,就重新发送数据报,直到得到对方的确认为止。

tcp报文:

扫描二维码关注公众号,回复: 10759839 查看本文章

2,tcp的3次握手和4次挥手
  所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

  首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

  TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作(中断连接),在socket编程中,任何一方执行close()操作即可产生挥手操作。

  挥手过程:假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。

  
 

2、UDP协议
  不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

  UDP特点:

    传送数据前不需要建立连接。
    尽最大努力交付,无法保证数据准确交付到目标主机,也不需要对接收到的UDP报文进行确认。
    是面向报文的,将应用层传输的数据封装在UDP包内,不做拆分或合并。
    没有拥塞控制,因此UDP协议发送速率不受网络拥塞影响
    支持一对一、一对多、多对多的交互通信
    UDP头部仅占用8个字节,占用较小
3、TCP和UDP对比总结
  TCP协议虽然安全性很高,但是网络开销大,而UDP协议虽然没有提供安全机制,但是网络开销小,在现在这个网络安全已经相对较高的情况下,为了保证传输的速率,我们一般还是会优先考虑UDP协议!

应用层  

    应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式。

  应用层功能:规定应用程序的数据格式。

  例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

转自该博客

猜你喜欢

转载自www.cnblogs.com/seyOrd/p/12692825.html