1、TCP/IP协议是由七层模型简化成四层而来。

七层有底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

简化后的四层分别是:主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。

每一层对于上一层来讲是透明的,上层只需要使用下层提供的接口,并不关心下层是如何实现的。

TCP/IP模型参考图如下(图为转载):

TCP/IP层次模型参考如下图(图为转载):

由图可见,TCP/IP协议实际上关心的是网络层和传输层之间得传输。

2、数据传输

传输数据时,传输端,将数据段分成数据包,然后在把每一个数据包分成数帧塞到网络互联层的数据帧中传输给对面。对面再将数据帧组合成数据包,最后解析成数据段供上层使用。

其中IP协议保证,数据帧可以从源主机传输到目标主机。在传输过程中采取某种策略以最优的方式达到目标主机。但并不保证到达的顺序,本身是不可靠的,不面向连接的。这里就需要上层的控制。

IP报文格式如下(图为转载):

IP不提供发送、接收、出错等通知。
IP不提供“端口号”之类的标记来隔离发到目标IP地址的数据包。
IP不提供双向通讯。
IP不会用任何方式对多个包排序或分组。

上层(传输层)定义了两种不同的协议,即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。

TCP是一种面向连接(双向)的,安全的协议。连接时通过三次握手协议实现。TCP将源主机的数据有序无差错的发往目标主机,同时可以通过在协议中添加对方缓冲区的大小,来达到控制流量的目的。

UDP是一种不可靠的,无连接的协议,穿透性比TCP协议强。穿透性由TTL决定,每穿透一层TTL减1。

追求安全、稳定或想控制流量的的时候可以使用TCP协议,如文件传输FTP,超文本链接HTTP。

在数据量大、或者网络不稳定(TCP网络校验耗时不适合网络差的时候)、或要求高穿透性的时候可以使用UDP协议。比如QQ聊天(QQ聊天的UDP协议,会有QQ服务器加层控制保证数据可靠)。

TCP数据段格式如下:

重点说下标志位字段,标志位字段中的AKG用来确认序号有效,连接和断开时都要使用。SYN表示发起一个连接,FIN表示结束。

UDP数据字段如下:

可以看出UDP和TCO都包含源端口号和目标端口号。

3、TCP的三次握手链接和四次握手释放

TCP连接需要3次握手,白话解释如下:客户端高速服务器我要连接了,然后发一个AKG过去,服务器接到之后高速客户端,我知道你想连接了,对AKG进行处理返回客户端,然后客户端收到后再高速服务器,恩,我知道你知道我要连接了,再将AKG处理发回服务器。然后就可以进行通信了。

详情如下:

源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。  
目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。  
源主机再回送一个数据段,同样带有递增的发送序号和确认序号。

TCP释放需要4次握手,因为TCP/IP是双工管道,双方的读写都需要关闭,同时也是对称的,双方都可以先发起关闭。白话过程解释如下:

分两个阶段。

一、客户端先告诉服务器,我要关啦,然后服务器收到后,关闭自己的读通道,然后告诉客户端我接到你的请求了,客户端收到后,关闭自己的写通道。

二、然后客户端再告诉服务器,我知道你知道我想关闭了。服务器收到后,关闭自己的读通道。然后服务器告诉客户端我知道你知道我知道你想关闭了,客户端收到后关闭自己的读通道。

详情如下:

第一阶段   客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i;
    1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1,关闭服务器读通道;
    2.客户机收到ACK(i+1)后,关闭客户机写通道;
   (此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据)
    第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j;
    3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1,关闭客户机读通道;
    4.服务器收到ACK(j+1)后,关闭服务器写通道。
这是标准的TCP关闭两个阶段,服务器和客户机都可以发起关闭,完全对称。

参考如下:http://www.cnblogs.com/BlueTzar/articles/811160.html  四层模型

http://www.cnblogs.com/Jessy/p/3535612.html  三次/四次握手

http://blog.csdn.net/herbert5069/article/details/31358641 网络穿透TTL

TCP/IP四层模型简述相关推荐

  1. OSI[七层]与TCP/IP[四层]模型简述简图

    OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织(Interna ...

  2. Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)

    1.AF_INET域与Socket通信 其是典型的TCP/IP四层模型的通信过程. (1)接收方与发送方依赖IP和port来标识,即,将本地socket绑定到对应的IP端口上: (2)发送数据时指定对 ...

  3. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名"开放式系统互联通信参考模型&q ...

  4. Network 【TCP/IP 四层模型】

    I. 协议 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了"敌人入侵"这一抽象信号.这样一个"狼烟= ...

  5. 网络分层模型OSI和TCP/IP四层模型

    网络分层模型OSI和TCP/IP四层模型 网络分层模型OSI和TCP/IP四层模型 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Op ...

  6. TCP/IP四层模型及各层协议首部详述(包含IOS7层)

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

  7. TCP/IP 四层模型

    I. 协议 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了"敌人入侵"这一抽象信号.这样一个"狼烟= ...

  8. TCP/IP四层模型与OSI七层模型

    0. 前言 TCP/IP协议族(TCP/IP Protocol Suite),简称TCP/IP. 该协议族的两个核心协议为:TCP(传输控制协议,Transmission Control Protoc ...

  9. OSI的7层模型和TCP/IP四层模型

    TCP/IP 四层模型 TCP/IP网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层. OSI 7层模型 物理层:主要定义 ...

最新文章

  1. 模拟linux磁盘满,linux 磁盘满了简单处理一下
  2. String 比较的部分理解(1)
  3. 第一百二十九天 how can I坚持
  4. python程序设计搜题软件下载_智慧职教云课堂APPPython程序设计答案搜题公众号
  5. c语言多线程面试题,iOS面试题--网络多线程
  6. 杭电1863畅通工程
  7. nginx配置后重启无效与重启失败
  8. java数据区_Java运行时数据区域介绍
  9. android u盘启动制作工具,多系统U盘启动盘制作工具(YUMI)
  10. 计算机操作系统第四版课后全部习题答案
  11. 计算机毕设选题可以选什么?计算机本科毕业设计选题2023年指南
  12. 【Unity3D】动态路障导航
  13. Python实用模块(二十四)tenacity
  14. SDNU QLU 2022.10.15 新生赛
  15. Tkinter-疫苗信息管理系统
  16. 聚焦“云XR如何赋能元宇宙”,3DCAT实时云渲染首届行业生态合作交流会成功举办
  17. 信息化绩效评价的内容(zt)
  18. python 利用os.rename()批量给文件改名
  19. angular5基础笔记
  20. matlab中画灯笼,新编使用Matlab画出圆台圆锥圆柱.doc

热门文章

  1. ARMv8 Cortex-a 编程向导手册学习_6.aarch64 应用移植注意事项与 AArch64 ABI
  2. 离职员工感人至深的话
  3. Ubuntu-Base在iMX8MM平台上的移植
  4. python中文词云生成
  5. 软件开发中的上游和下游
  6. 移动APP开发之技术选择
  7. 娱乐界两大钻石王老五的本质不同(附图)
  8. linux 前后台任务命令 bg、fg、ctrl+z、ctrl+d和ctrl+c 使用
  9. JAVASE、JAVAEE、JAVAME介绍
  10. php好看的图形验证码,一漂亮的PHP图片验证码实例