接下来,总结传输层的两大协议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. echarts 知识点

    echarts map 禁止放大缩小,设置 calculable 为 false 即可. calculable: false echarts 报错: There is a chart instance ...

  2. Charles :mac上的手机代理

    能在手机访问电脑上的网页. 配置: 下载 Charles,选中 Proxy => macOS Proxy Proxy => Proxy Setting 配置上端口 手机无线手动代理,配置上 ...

  3. Entity创建一对一关系

    Area类 public virtual User User { get; set; } User类 public virtual Area Area { get; set; } Context类 m ...

  4. JSP中的MVC

    如下图

  5. 在ASP.NET应用程序中使用身份模拟(Impersonation)

    摘要   缺省情况下,ASP.NET应用程序以本机的ASPNET帐号运行,该帐号属于普通用户组,权限受到一定的限制,以保障ASP.NET应用程序运行的安全.但是有时需要某个ASP.NET应用程序或者程 ...

  6. theme为dialog的Activity如何充满全屏

     转自:http://blog.csdn.net/fzh0803/article/details/9787615 分类: android_点滴记录2013-08-06 10:33 2005人阅读 评论 ...

  7. springMVC学习(5)-参数绑定

    接着上一集,记录参数绑定的过程: springmvc中,接收页面提交的数据是通过方法形参来接收: 一.默认支持的类型: 在controller形参中添加如下类型的参数处理适配器会默认识别并进行赋值: ...

  8. applicatonContext.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  9. Valgrind memcheck 8种错误实例

    调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2. 解压安装包:tar –jxvf ...

  10. Server Tomcat v8.0 Server at localhost failed to start.的解决方法

    1.可能是web.xml中的filter-mapping中url-pattern没加/* 2.可能是servlet和servlet-mapping中的servlet-name不匹配