第四十九讲——TCP层/传输层 本文共有29608个字,关键词: 在我们的TCP/IP模型中,网络层之上就是传输层。 VFS是沙漏模型(虚拟文件系统)。 TCP/IP协议也是沙漏模型。 假如有一个令牌环网,还有一个10M的以太网,两个网络底层的通信,网卡类型都不相同,此时他们之间如何通信?路由解决了这一底层硬件不同的差异,即不管底层硬件如何,但是到了IP层以后路由的接口必须要能够和本地网络通信才可以。 传输层协议: TCP传输控制协议 UDP用户数据报协议 Ethernet以太网 PPP点对点拨号网络 这些协议最终统一到IP,无论MAC算法是什么。 TCP(Transmission Control Protocol):传输控制协议 UDP(User Datagram protocol):用户数据报协议 TCP为有连接的协议|UDP为无连接的协议。 对于UDP来说,只要将数据报报文放到网络上即可,不管对方是否能够接收到,接收方是否收到报文还需要靠网络和接收方是否在线来决定。 对于TCP来说,要发送报文给对方,会先发送一个试探性的报文,用于提醒接收方接收报文,如果接收方无应答,则数据报文不会发送,如果接收方响应,此时发送方会再发送一个报文用于提醒接收方接收报文。然后开始发送报文,且每一个报文都要确定对方接收无误后才发送下一个报文。即每封报文发送前需要收到上封报文的确认信息,不然不会继续发送。 由于TCP的每一次通信都需要对方确认,这种方式会使数据报文非常可靠,但是也会导致效率低下。所以对于即使通信软件来讲,一般都使用UDP协议,速度快。而对于很多数据可靠性要求较高的情况下,才会使用TCP协议。如QQ,使用UDP协议,它的数据通过应用层得到保证。(服务器应用层的协议来保证数据的到达。) 我们要清楚的是,互联网上的大多数应用是通过TCP来完成的。由于现在的带宽足够大,而且速度也是足够快,因此TCP的使用越来越多。 http、ftp、pop3、SMTP协议都是TCP的。 UDP:使用DNS查询的是UDP协议,DHCP是UDP协议的,TFTP也是UDP的。 上述都是应用层的协议。 TCP协议通信前三次握手建立连接,TCP握手连接后建立起的是一个双向的通道,这个双向通道断开时也需要双向断开。即四次挥手。 断开时总有一方先断开,我们称之为主动断开,或者主动关闭,另一方称为被动关闭。 当主动方发出断开请求后,要产生两段等待,第一段等回应,time-wait1(第一阶段等待),第二段等待被动方说断开,time-wait2(第二段等待)。 TCP Header(TCP首部) 网络防火墙中要使用到,此内容相当重要☆ 依然是一行4个字节(byte),32位。 ·源端口(source port number 16bit) 目标端口(destination port number 16bit) ·序列号(sequence number 32bit)通过一个机制在发起请求时生成一个号码。 ·确认号(ACKnowledgment number 32bit) 首部长度 保留位 紧急位 确认位★ 推送 重置★ 开始★ 结束★ 窗口大小 head lengh reserved URG ACK push PSH RST SYN FIN window、size 4bit 6bit(现为3bit) 1bit 1bit 0无效1存放 1bit 1bit 1bit 1bit 16位 ·TCP checksum(tcp的校验和 16bit) urgentpointer紧急指针(URG位1指针有效,URG位为0指针位为1指针有效) ·Options(可选段) 当多个进程需要发送报文时,会由内核接收,暂时存入缓存,由网卡一个一个向外发送,接收时也一样,先将接收到的放入缓存,一个一个处理,接收速度与接收缓冲有关,发送速度与发送缓存有关,网卡速度也有限。 PSH位有优先传送特权,不放入缓存直接推送。 RST重置,当建立连接时网络抖动了一下(路由器断开了一下),在原来的基础上重新建立连接(不需要像三次握手那样去做。) 窗口大小:接收方本身的缓冲当中剩余的可容纳的报文的个数,以及链路中能总体容纳的个数。解决了发送速度大于接收速度,造成的报文丢失,达成发送,接收平衡。所以发送方一次发多少个要取决于对方(接收方)窗口大小。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-18 评论 1574 次浏览