简单理解TCP/IP传输层协议TCP和UDP_tcp模型中传输层涉及协议-程序员宅基地

技术标签: .net core开发  TCP/UDP  计算机网络  Socket  

TCP/IP模型中的传输层主要负责端到端通信,和数据链路层类似,数据链路层负责点到点的通信。TCP/IP模型的传输层主要协议有TCP (Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

比如:应用程序A和 B 利用TCP通信:

TCP 把A的数据分成多个段,把段传送给网络层,网络层把数据封装为IP数据包,发给B。

B的网络层将IP数据包分段交给B的传输层,传输层将分段重组还原成原始数据,传送给B的应用层。

如果没有传输层,IP 协议把分组送给B后还停留在B的网络层而不能交付给应用进程。而要实现这个功能,就需要使用传输层的功能,需要在传输层间提供一条逻辑信道完成通信。传输层的“复用”和“分用”功能,通过不同的端口将报文交付给对应得应用进程。上面的这条逻辑信道因不同的协议TCP 或UDP 表现差异很大,TCP逻辑信道相当于一条全双工的可靠信道,UDP是一条不可靠的信道。

UDP: 是面向无连接的协议,通信前不需要建立连接,直接发数据过去,通信效果高,可靠性不强。例如:ping 命令就是使用发送UDP数据包来判断网络是否连通。

TCP:是面向连接的、可靠的基于字节流的传输层协议。通信前需要建立连接,通信后需要拆除连接。显然,TCP 需要更多的协议数据单元头部,占用许多主机资源。

上图为TCP包的结构:

例如1:确认序号:期望收到的下一个报文的首部序号字段的值。简单理解为:序号+数据长度,比如正确收到了一个报文段,其序号字段值是501,数据长度200,表明序号在501~700之间的数据均已正确收到。因此,确认序号值为701.

2:首部长度(TCP偏移量指定了段头的长度。段头的长度取决与段头选项字段中设置的选项;

占4位,1111 二进制的10进制为15,首部 长度的单位是4字节。15*4=60字节,所以数据偏移的最大值(TCP首部的最大长度)是60字节;

3:窗口:指定关于发送端能传输的下一段的大小的指令,根据接收端的接收能力来定;

端口:传送层收到网络层交上来的TCP数据段或UDP数据报时,根据协议里的端口号决定应当通过哪个端口上交给应用进程。

套接字(Socket):TCP 或UDP 可能被要求同时为多个应用程序进程提供并发服务。为了区别不同的应用程序进程和连接。操作系统为应用程序与TCP/IP交互提供了称为Socket的接口。

程序中的Socket 是什么:引用百度百科的一段来学习下:在网络应用程序设计时,由于TCP/IP的核心内容被封装在操作系统中,如果应用程序要使用TCP/IP,可以通过系统提供的TCP/IP的编程接口来实现。在Windows环境下,网络应用程序编程接口称作Windows Socket。为了支持用户开发面向应用的通信程序,大部分系统都提供了一组基于TCP或者UDP的应用程序编程接口(API),该接口通常以一组函数的形式出现,也称为套接字(Socket)

在C#.NET中 Socket类就是提供这个功能的API。

个人感悟:做网络编程,数据通讯久了自然会想到一些底层原理上的问题。看理论若干遍还不如实际动手操作一番,加深理解和记忆。比如路由器和交换机的区别,看了不少百度百科,百度知道,也能回答出他们的区别:如交换机工作在数据链路层、路由器工作在网络层。交换机基于MAC地址转发数据,而路由器基于IP地址转发数据。不带路由功能的交换机只能分割冲突域,无法分割广播域,而路由器可以分割广播域。如果只是学习下计算机网络基础知识死记硬背,绝对没有什么深刻的体会,但如果利用Cisco的PT模拟器实际动手操作一番,理论和实践结合,相信会有另外一番领悟。

软件工程师必须要懂计算机网络基础知识,有企业对招聘也提到懂TCP/IP协议,懂路由和交换技术优先的原因。不关心底层发生了什么,熟练应用编程也没有关系,知道点底层对自己也是有一种帮助的。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/elie_yang/article/details/99407156

智能推荐

重启服务器之后的 502 Bad Gateway_网站502bad重启服务器可以吗-程序员宅基地

文章浏览阅读6.4k次。服务器重启之后,出现502 Bad Gateway_网站502bad重启服务器可以吗

论弱逼的自我修养——2014集训队CF试题泛做_cf253e-程序员宅基地

文章浏览阅读2.7k次。为了增长姿势水平提高思考能力,我决定跟着神犇膜一膜2014的集训队作业;似乎大多数是CF上的DE题,应该比较有含金量(然而博主是个div2连D都没做上过的**);感觉不久就会弃坑吧,大家来猜猜窝能坚持几道题吧!_cf253e

python随机模块random的22种函数(小结)_random函数各种分布函数-程序员宅基地

文章浏览阅读1.2k次。随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块,用于生成伪随机数,之所以称之为伪随机数,是因为真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,对于正常随机而言,会出现某个事情出现多次的情况。但是伪随机在事情触发前设定好,就是这个十个事件各发生一次,只不过顺序不同而已。现在MP_random函数各种分布函数

python中解决import matplotlib.pyplot as plt 出现报错:OSError: [WinError 193] %1 不是有效的 Win32 应用程序_matplotlib 在32位的python里报错-程序员宅基地

文章浏览阅读1k次。先上代码:import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]fig, ax = plt.subplots()ax.plot(squares)plt.show()在pycharm运行出现报错:而在sublime text却可以正常运行。博主通过查阅大量的资料,终于解决了问题,但对于其原理,博主还是没能完全参透。首先,我们查看不同python版本的信息:第一张图是系统默认的,也就是sublime使用的python环境:可_matplotlib 在32位的python里报错

Java日志规范_日志中不能拼接字符串-程序员宅基地

文章浏览阅读651次。日志文件:Logger.debug():yyyy-mm-dd-debug.i.log 按天和200M滚动,打印调试信息,保留5天Logger.info(): yyyy-mm-dd-info.i.log 按天和200M滚动,打印业务日志,保留15天Logger.error(): yyyy-mm-dd-error.i.log 按天和200M滚动,打印错误信息,保留30天日志格式:yyyy-MM-dd HH:mm:ss.SSS 级别 IP 进程号 ---线程 类路径 - 消息..._日志中不能拼接字符串

【推理优化】超详细!AIGC面试系列 大模型推理系列(2)-程序员宅基地

文章浏览阅读707次,点赞22次,收藏10次。本期问题快览有哪些常见的大模型推理优化技术介绍下通过流水线处理技术来加速大模型推理方案介绍下并行计算技术来加速大模型推理的方案有哪些通过硬件来加速大模型推理的方式?模型量化是如何加速大模型推理的?有哪些通过缓存来加速大模型推理的方式?vLLM 如何优化大模型并行推理加速什么是 PagedAttention?PagedAttention 技术细节什么是Flash Attention?Flash Attention 技术细节?

随便推点

【STM32】keil5兼容打开keil4工程_keil5打开keil4工程-程序员宅基地

文章浏览阅读1.2k次。keil5兼容打开keil4工程。可以通过安装兼容包解决。_keil5打开keil4工程

ADSL上网TP-LINK路由器设置方法_tplik modem.net-程序员宅基地

文章浏览阅读1.2k次。最后由 Lulu 于 2011-04-14 17:31:22 修改TP-LINK路由器 PPPOE拨号方式路由器操作指南首先把路由器的WAN口和Modem的LAN口连接起来,电脑网卡连接路由器任意一个LAN口;如果是网线到家,就直接把网线接到路由器WAN口。 然后为电脑设置网络参数,指定IP地址,如果电脑不多的话,建议用户手动指定IP地址。若路由器为默认设置,那么主_tplik modem.net

【附源码】跨界救场:如何用纯前端的方式获取视频首帧-程序员宅基地

文章浏览阅读1.4k次。背景最近在搬砖时遇到一个问题,在商详页面有些商品只有视频,没有封面图。我们的交互是用户点击视频封面图调用 native 播放器播放视频,没有封面图视频就没有了载体,就不能展示了。这个问题有..._前端获取视频第一帧

Java之DriverManager简单介绍_一冫一冫一冫冫那么java driver commuter winter bird-程序员宅基地

文章浏览阅读3.1w次,点赞16次,收藏20次。开心一笑爱神和月老 甲:“你知道西方国家闹离婚的为什么比中国的多吗?” 乙:“这还不简单,因为西方的爱神丘比特是个娃娃,而中国的是月下老人,经验当然丰富得多!”提出问题DriverManager类的简单学习???解决问题DriverManager在java.sql这个包里面,管理一组 JDBC 驱动程序的基本服务package com.evada.de;import java.sql.Conn_一冫一冫一冫冫那么java driver commuter winter bird

Java中实现连接数据库并进行查询-程序员宅基地

文章浏览阅读1.1k次。  首先我们在在File中选择new在选择java project在任意取一个名字,如图:  选择才创建的项目userManager,在src下分别创建dao包,DBHelper包(可直接在其他项目中把它复制过来),entity包和servlet包,如图:  打开entity,在它下面new一个class,命名为User,然后定义三个变量代码如下:package entit..._java实现数据库的查询

小波去噪、均值滤波、中值滤波对波形去噪的MATLAB仿真程序_init=2055615866-程序员宅基地

文章浏览阅读1.5k次。小波去噪:load leleccum;index = 1:1024;x = leleccum(index);%产生噪声信号init = 2055615866;randn(‘seed’,init);nx = x + 18*randn(size(x));%获取消噪的阈值[thr,sorh,keepapp] = ddencmp(‘den’,‘wv’,nx);%对信号进行消噪xd1 = wdencmp(‘gbl’,nx,‘db4’,1,thr,sorh,keepapp);xd2 = wden_init=2055615866

推荐文章

热门文章

相关标签