接下来,总结传输层的两大协议UDP和TCP。

一.UDP(用户数据报协议)

  讲UDP之间,先了解两个概念:有连接和无连接。

  有连接:通信之前,通信双方必须建立一条通道;

  无连接:不需要建立通道,发送方只管发,接收方收不收得到不关心。

  而UDP叫做无连接、不可靠的运输协议。除了提供进程到进程(而不是主机到主机)的通信之外,就没给IP服务添加任何东西。此外,它还完成非常有限的差错检验。说完它的缺点,那它的优点呢?UDP是个非常简单的协议,只有最小的开销。不考虑可靠性,发送的消息又很短时,就可以用UDP!

  这里又提到两个概念:进程到进程的通信,主机到主机的通信

  进程到进程的通信:IP协议将报文交付给目的计算机,这是一种不完整的交付。这个报文必须交到正确的进程。这就是UDP干的。

  完成进程到进程的通信有好几种方法,最常用的就是通过客户--服务器范例(C/S)。

  在互联网中,主机是用IP来定义自己,而进程就需要用端口号来定义自己:熟知端口(0~1023);注册端口(1024~49151);动态端口(49152~65535)。常见的几个熟知端口7-->echo(把收到的数据回送到发送端);13-->daytime(返回日期和时间);69-->TFTP(简单文件传送协议)。

  套接字:网络IP加端口号。

  UDP有8个字节的固定首部,格式如下:

  差错控制:当接收端使用检验和并检测出差错时,就悄悄的将这个用户数据报丢掉。

二.TCP(传输控制协议)

  像UDP一样,TCP也是进程到进程的协议。因此,也使用端口号。与UDP不同的是,TCP是面向链接的协议,两个TCP之间建立一条虚连接(不是物理连接)也是可靠的。此外,TCP在运输层使用流量控制和差错控制机制。格式如下:

  

控制位:

URG-->紧急指针字段值有效  

ACK-->确认字段值有效

PSH-->推送数据

RST-->连接必须复位

SYN-->在连接建立时必须对序号进行同步

FIN-->终止连接

窗口值:这个字段定义对方必须维持的窗口值。注意到这个字段是16位长,因此窗口值的最大长度是65535字节。

接下来,看看TCP在整个通信过程中的时序:

  从上图中我们清楚的看出,在连接开始阶段,客户端发送了个一个SYN报文段,报文段中只有SYN标志位被置为1,用来同步序号,消耗一个序号。接下来服务器发送了一个SYN+ACK的报文段,同步自己的初始序号,以便向客户端发送字节。同时发出一个ACK确认报文,表面确认收到来自客户端的SYN报文,并期望客户端继续发送下一个序号。SYN+ACK,不携带数据,消耗一个序号。ACK如果不携带数据,就不消耗序号。

  再来看连接关闭阶段的四次握手:从客户端到服务器的收据传送结束了,给服务器发送一个FIN报文段,连接进入半关闭,客户端进入FIN_WAIT状态。这时服务器仍然可以发送数据。当服务器已经把所有处理过的数据都处理完毕后,就发送一个FIN报文段,并且被客户发来的ACK予以确认。

TIME_WAIT:

  收到第二个FIN,已发送ACK;等带2MSL超时。可是我们为什么要2MSL的时间进行TIME_WAIT呢?两个理由:1.如果最后一个ACK报文段丢失了,那么服务器TCP以为它的FIN丢失了,如果客户端进入CLOSED状态,并在2MSL计时器超时就关闭了这条连接,那么客户端永远收不到FIN,服务器也就永远收到关闭的ACK。2.前一个连接中的重复报文有可能到达新的连接中,被解释为属于新连接的报文段,为了避免这个问题,就设置为了2MSL的等待时间。  

  

            

TCP/IP知识总结(TCP/IP协议族读书笔记三)的更多相关文章

  1. TCP/IP知识总结(TCP/IP协议族读书笔记二)

    接下来,总结一下网络层的协议,IP,ARP,RARP,ICMP,IGMP.当我们在网络传输的过程中,把分组交付到主机或路由器需要两级地址:物理地址和逻辑地址.而且我们需要能够把物理地址映射成为相应的逻 ...

  2. TCP/IP知识总结(TCP/IP协议族读书笔记一)

    一.简述TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/互联网互联协议,又名网络通信协议.是Internet最基 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——07

    2013-08-20 17:51:49 第三章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP和IGMP数据都以IP数据报格式传输.再来看一下图 ...

  5. 『TCP/IP详解——卷一:协议』读书笔记——06

    2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——03

    2013-08-17 17:31:49 1.7 分用 分用(Demultiplexing):这是一个过程——当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议上的报文首 ...

  7. 《TCP/IP详解 卷1:协议》读书笔记

    第一章 概述 协议栈 应用层 HTTP,FTP   运输层 TCP, UDP 段(Segment) 网络层 IP, ICMP, IGMP 数据报(Datagram) 链路层   帧(Frame) 物理 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——17

    2013-08-27 15:37:42 6.5 ICMP端口不可达差错 端口不可达报文是ICMP差错报文的一种,它是ICMP不可达报文中的一种,以此来看一看ICMP差错报文中所附加的信息.使用UDP来 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

随机推荐

  1. weex-toolkit 使用

    weex-toolkit 的github地址:https://github.com/weexteam/weex-toolkit weex-toolkit: 初始化的项目是针对开发单个 Weex 页面而 ...

  2. vue-cli 中的静态资源处理

    你会注意到在项目结构上我们有静态资源两个目录:src/assets 和 static/.它们之间有什么区别? 1. 通过webpack处理的资源 要回答这个问题,我们首先需要了解webpack如何处理 ...

  3. windows 安装操作系统时切换分区表格式

    在出现分区管理界面时,按下shift+F10呼出命令行,输入diskpart 后尝试如下命令将磁盘分区表手动转换到MBR. list disk ---- 显示当前磁盘列表 select disk x ...

  4. 深入理解ASP.NET MVC(4)

    系列目录 DataTokens和Areas机制 到目前为止Route对象只剩下DataTokens属性没有涉及,事实上这个Areas机制的核心. DataTokens实际上也是一个RouteValue ...

  5. Windows Phone 的这几年

    Windows Phone 从2010年10月发布,到如今已经有3年多了.从那时坚持到现在的用户和开发者一定感慨很多吧. 一直关注着这个让人既爱又恨的平台的发展,笔者不仅是使用者,也同时是开发者,这里 ...

  6. python使用smtplib发送邮件

    python要实现发送邮件的功能,需要使用smtplib库. 1. 过程大致如下: 1. 建立和SMTP邮件服务器的连接 # 默认端口25 smtp = smtplib.SMTP(host, port ...

  7. cpu监控之三:mpstat命令

    mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.报告CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有CP ...

  8. ossfs工具将OSS挂载到阿里云linux系统目录例子

    ossfs 是基于 aliyun OSS 的 fuse 客户端了,所以我们把它用在阿里云上肯定是没有错了,下面来看一篇关于ossfs工具将OSS挂载到阿里云linux系统目录例子,具体的细节如下文介绍 ...

  9. 17monipdb.dat

    17monipdb是一款全球ipv4地址归属地数据库.专注于与地理位置定位相关的数据的整理与发行,致力于将地理位置数据变得更准确.更精确,该 IP 库主要基于 BGP/ASN 数据以及遍布全球的网络监 ...

  10. C#后台调用前台javascript的五种方法小结

    第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Tex ...