PS:针对上一篇tcp协议中说到的端到端服务,这里我们再通过传输层协议和应用层协议之间的关系来加深端到端服务的学习和理解。

1. 传输层协议和应用层层协议的关系

  在应用层,我们知道有很多协议,比如常见的有http,tfp,telnet等,传输层常见的协议有tcp,udp等。通常在发送数据时,应用层是怎么来把数据发送给指定传输层的协议?而在接收数据时,传输层又是怎么把数据上交给指定的应用层协议来处理的?

  带着这几个问题,我们思考一下传输层的协议是怎么来区分应用层的协议呢?

  通常传输层协议为应用层的每一个协议标识了一个端口号,也就是传输层通过不同的端口号来区分不同的应用层协议,传输层协议和应用层协议之间的关系,如图1所示:


图1-传输层协议和应用层协议之间的关系

  从图1中不难看出,传输层加了端口号来标识应用层的每个协议,那么我们可以知道传输层协议和传输层协议之间的关系:

1.HTTP协议默认使用了TCP的80端口号
2.FTP协议默认使用TCP的21端口号
3.TELNET协议默认使用了TCP的23端口号
4.SMTP协议默认使用了TCP的25端口号
5.DNS协议默认使用了UDP的53端口号
6.RIP协议默认使用了UDP的520端口号
7.DHCP协议默认使用了UDP的67端口号

  一般来说这些默认端口号是熟知端口(0 - 1023),由IANA组织已经分配好的,最好不要随意改动,以免出现端口不可用或被占用,造成网络无法通信的情况。


图2-端口和服务的关系

  在图2中可以看到,服务器上运行了web服务,smtp服务,pop3服务,这三个服务分别使用了不同的协议和服务端端口号与客户端进行通信,另外这三台计算机分别也使用了不同客户端端口号和服务端通信。现在这三台计算机分别要访问服务器上的不同服务,发送了3个数据包。

  A计算机要访问服务器上的web服务,因为服务器上的web服务使用了http协议和80端口跟客户端进行通信,所以A计算机发送的数据包,必须封装服务器的目标地址和服务对应的目标端口号,同时服务器也要通过这个数据包拿到源地址和源端口号,然后和客户端通信,因此我们会看到数据包中封装的这些信息。

  对于B计算机和C计算机都是同理,当服务器收到这三个数据包,会根据数据包中不同的目标端口号交给不同的服务,然后服务器上的服务会根据数据包中不同的源端口号再把数据返回给不同的计算机。

  现在我们基本上明白了,ip地址是用来定位网络上的某一台服务器,而端口号是用来定位服务器上的某一个服务。到这里,相信你对端到端服务有更深的理解了。

2. 传输层协议和网络层协议的区别


图3-传输层协议和网络层协议的区别

  简单来说,传输层协议主要用于主机的进程与进程之间的相互通信,而网络层协议主要应用于主机与主机之间的相互通信。

3. 套接字地址


图4-套接字地址

  实际上TCP使用“连接”(不仅仅是端口)作为最基本的抽象,同时将TCP连接的端点称为插口,或套接字(socket)。

  前面我们说过TCP协议是通过IP地址+端口号的形式来确定数据发送的目标主机的目标进程。那么套接字和端口,IP地址的关系就是:套接字其实就是IP地址和端口号,比如在网络编程里用套接字来表示ip地址和端口号。

4. 关于字节号和序号

  不知道大家还有没有印象,之前我们在14-tcp协议中的第三小节(TCP对数据封装过程)简单提到过字节和序号,如果有小伙伴不太理解的话,这里再详细介绍一下字节号和序号。

  字节号:TCP是面向字节流的,因此TCP会对字节数据进行编号,即每一个字节数据都会有一个编号,这个编号就叫字节号,编号的范围是:0 ~ 2^32-1,需要注意的是TCP对字节数据编号不是从0和1开始的,而是根据系统内核机制来随机编号的。

举个栗子:
  现在主机A随机产生了一个编号为1024的字节号,如果现在主机A要发送一个数据,该数据为6000字节大小,那么该数据的字节号范围为1024 - 7023。

  序号:前面我们说过序号是针对数据段的,由主机发送的这6000字节数据以数据段为单位,封装成多个大小不同的tcp数据段报文在网络中传输。因为序号是基于字节号的,所以tcp协议会给每个tcp数据段报文分配一个序号,而这个序号就是tcp数据段报文的第一个字节的编号(字节号)。

举个栗子:
  比如现在主机A要发送一个6000字节大小的数据,tcp协议对数据分成5个数据段报文来发送,前4个数据段报文都是1000字节,最后一个报文是2000字节。

假如第一个字节的编号为110
那么第一个报文的字节号范围:110 ~ 1109
第二个报文的字节号范围:1110 ~ 2109
第三个报文的字节号范围:2110 ~ 3109
第四个报文的字节号范围:3110 ~ 4109
第五个报文的字节号范围:4110 - 6109
到这里,序号已经间接给出来了

15-传输层协议和应用层协议相关推荐

  1. Day5-2021.1.13 计算机网络原理 第八章 传输层+第九章 应用层 河北师范大学韩老师的视频

    2021年1月13日 时间都去哪了? 今日计划:计算机网络的传输层和应用层看完视频.整理计网面经.面经才是重要的,笔记不用很细心,又不是期末考试. 今日工作:计算机网络的传输层和应用层看完视频. 今日 ...

  2. 现场解析服务化 即时通讯方案丨网络协议,应用层协议的选择

    90分钟解析服务化 即时通讯方案,(不要错过) 1. 网络协议选择 udp/tcp 2. 应用层协议选择 protobuf/xmpp/mqtt 3. 数据库表的设计 视频讲解如下,点击观看: [Lin ...

  3. 【网络原理】- 传输层 TCP 十大机制 / UDP 协议 自定义应用层协议

    目录 1.自定义应用层协议 1.1 自定义协议,应该如何约定 2.传输层 UDP/TCP 原理 2.1 UDP协议 2.2 传输层 TCP 的十大机制 2.2.1 确认应答 2.2.2 超时重传 2. ...

  4. 应用层、传输层、网络层常用协议

    OSI模型: 名称 层次 功能 物理层 1 实现计算机系统与网络间的物理连接 数据链路层 2 进行数据打包与解包,形成信息帧 网络层 3 提供数据通过的路由 传输层 4 提供传输顺序信息与响应 会话层 ...

  5. TCP\IP 协议栈中的协议 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层

    粉丝不过W 7 层体系的 OSI 参考模型,低层为 1~4 层:面向通信, 高层为 5~7 层:面向信息处理 物理层(Physical Layer) 利用一些物理媒体, 如双纽线. 同轴电缆等 传递信 ...

  6. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  7. 传输层 :TCP/UDP 协议(用于封装接口)

    一.UDP协议 16 位源端口号.目的端口号:用于定位进程 . 端口号上限是 216^{16}16 - 1 = 65535. 二.TCP协议 TCP 数据报:除了拥有端口号,还拥有 (1)32 位为序 ...

  8. linux工作在传输层,linux net子系统-协议层(传输层与网络层)

    传输层 struct proto struct tcp_prot位于文件net/ipv4/tcp_ipv4.c struct proto tcp_prot = { .name = "TCP& ...

  9. 基于TCP或UDP协议的应用层协议

    TCP和UDP都是传输层协议,上面是应用层,下面是网络层 TCP与UDP区别: TCP(传输控制协议)提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连 ...

  10. FTP、TFTP、HTTP、SMTP、DHCP、Telnet、DNS、SNMP(网络协议:应用层协议)

    面试和笔试中,如果记住下面这张图,基本就能解决网络协议中70%的问题.需要记住: OSI模型和TCP/IP模型每一层名称: 每一层对应有哪些协议,或者说给出该协议要知道对应那一层: 该协议是基于TCP ...

最新文章

  1. 美多商城之商品(商品数据库表设计)
  2. java 查询线程_Java多线程查询
  3. Cordys服务器启停脚本
  4. PAT-BASIC-1016-部分A+B
  5. php连接mysql数据没反应_PHP mysql 数据库连接时 网页无法显示
  6. WebBrowser中显示乱码
  7. window.opener方法的使用 刷新父页面
  8. STM32学习——ROV遇到的坑
  9. Mongoose 是什么?
  10. js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
  11. python包管理工具pip的使用
  12. matlab2c使用c++实现matlab函数系列教程-factorial函数
  13. es6遍历树结构并判断_实现树形结构数据 es6
  14. 使用虚拟机备份软件备份云宏Winghong CNware虚拟机
  15. vs2013实现duilib结合cef的demo
  16. Python3对股票的收益和风险进行分析
  17. 虚拟现实应用案例_虚拟现实的应用
  18. php中划弧线,cad画弧形的快捷键是什么?如何画弧形?
  19. 不能错过!9个让你随时保持精力充沛的习惯
  20. java 中的radix_Java Scanner radix()方法与示例

热门文章

  1. decent compiled words
  2. 烧结钕铁硼的居里温度与工作温度
  3. 如何将b站视频从手机传输到电脑上
  4. python 人脸识别活体检测_手把手教你用Python实现人脸识别,辨别真假!
  5. linux谷歌浏览器flash屏蔽,默认禁用Flash!谷歌发布Chrome 76稳定版
  6. 常见概率抽样方法及其适用场景总结
  7. oracle 更新数据语句,数据更新语句update
  8. 2020年全球及中国电源管理芯片(PMIC)行业发展现状及市场竞争格局分析,全球市场集中,德州仪器市占第一「图」
  9. STC15系列单片机-I/O口小结
  10. 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少?