TCP/IP协议_tcp/ip包内容-程序员宅基地

技术标签: 网络  服务器  tcp/ip  

TCP/IP体系结构如图所示:09398ece24834d4eb973828d2a894f87.png

网际协议IP(Internet Protocol)不但为各个互联的网络提供统一的数据包格式,而且还提供寻址路由选择数据的分段和重组功能,它能将数据包从一个网络转发到另一个网络。

  IP协议以包的单位传输数据,IP数据包在Internet中称为IP数据报。IP协议提供的是不可靠的面向无连接的数据报服务,它不管传送的数据报正确与否,都不进行检查、不回送确认,也没有流量控制和差错控制功能。IP这种特性不是一种缺点,它提供了传输功能的主框架,用户可以根据需要在传输层对给定的应用添加必要的功能。

1.1 IP数据报

 IP数据报是一个可变长度的包(最小为20字节,最大65536字节)。它由头部和数据两部分组成,数据报格式头部的构成 如图。ed0773b292c14a9bb40e0b6cc20da7fd.png

 1.2 TCP/IP协议的地址

     1.物理地址

物理地址指网卡(NTC)地址,它也称为MAC地址或硬件地址。物理地址是由生产厂家通过编码烧制在网卡的硬件电路上,不管它位于什么地方,物理地址总是恒定不变的。网卡地址由48位二进制数字组成(用12位十六进制数表示),高24位是由IEEE分配的厂商地址,低24位生产厂商自己管理的地址(序列号),每一个网卡的物理地址在全球都是唯一的。

     2.IP地址

·IP地址由32位二进制比特组成,没8位为一段,共分为4段,段间用“.”分隔。为了易于阅读。IP地址每一段表示为其对应的十进制数字,称为“点分十进制”表示形式。例如:211.70.248.3。

·IP地址由类型、网络号和主机号三个部分组成。路由寻址时,首先根据地址和网络号到达网络,然后利用主机号到达主机。

IP地址分为A类、B类、C类、D类和E类共五大类,如图所示。不同的类适用于不同规模的网络。

98a01cb177d848b6b2713b586c4b24c3.png

A类私有地址:10.0.0.1~10.255.255.254

B类私有地址:172.16.0.1~172.31.255.254

C类私有地址:192.168.0.1~192.168.255.254

私有地址通常说不能为外界访问的,若要访问,则需要NAT

4.路由器(网关)的IP地址

路由器或网关常常被分配两个或更多的IP地址,用于连接两个或多个网络。

5.IP地址的分配和使用

Internet中IP地址是由指定机构分配的,这些地址外部用户可以访问它们,将它称为IP公有地址。局域网内部的计算机如果步作为Internet的主机供其他用户访问,那么IP地址可以任意分配。IPv4的地址只有32位,资源已十分紧张,在新一代的INternet中,将会使用128位的IPv6地址

DHCP:动态主机配置协议

1.3 子网掩码和默认网关

1.子网掩码

·子网掩码的作用

子网掩码能分出IP地址中哪些位数网络ID,哪些位是主机ID。通过它和IP地址进行按位"逻辑与(AND)"运算,可以屏蔽掉IP地址中的主机不分,得到IP地址的网络ID。如果两台计算机网络ID相同,则表示两台计算机属于同一网络。

子网掩码的另一个作用是将一个网络ID再划分位若干个子网,以解决网络地址不够的问题。

·默认子网掩码

1.4 IP地址的配置管理

1.静态IP地址

静态IP地址由网络管理员手工对主机TCP/IP协议的相关选项进行配置。分为IP公有地址和IP私有地址两类

2.引导程序协议B800TP

3.动态IP地址

动态IP地址由DHCP服务器动态分配。请求DHCP服务的主机,每次进入网时所得到的IP地址可能不同,这是DHCP服务器将地址池中的某个地址临时分配给主机,主机使用结束后又由DHCP服务器收回,供其他主机使用。

4.自动专用IP地址

地址空间为“169.254.0.1”~“169.254.255.254”。小型局域网中如果没有DHCP服务器,可以将所有计算机都设为“自动获得IP地址”,这样每个Windows 2000的计算机都使用自动专用IP地址

 2.1 子网划分的作用

·可以连接不同的设备

 ·重新组合网络的通信量

·减轻网络地址数不够的负担

·更有效地使用网络地址

2.2 子网划分的方法

 子网划分可以从IP地址的主机号前面部分“借”位,并把它们指定为子网号。

 1. 确定子网的数目

根据子网数目确定取子网号位数。如取3位,可以有2³=8种组合。注意:

·子网号必须是2位以上,主机号部分不能少于两位。

·子网号不能为全0(但有些路由器支持“0”子网实现

·子网号不能为全“1”

子网数的计算公式如下:2ⁿ - 2 (n≥2,n是子网号位数)

2.确定每个子网支持的最大主机数

每个子网支持的最大主机数用主机号的剩余部分计算而得。公式为:2ⁿ — 2。其中,n是剩余的主机号位数,减去2的原因是主机号全“0”和全“1”都不能作为主机号。主机号全“0”代表网络号加子网号,主机号全“1”代表这个子网的广播地址。

3.划分子网后的子网掩码

划分子网后的子网掩码会有改变,它是将对应位子网号的部分全变为“1”后作为新的子网掩码。例如,对于B类地址,如果取主机号的前三位作为子网号,则相应的子网掩码变化如下:

划分前:11111111.11111111.00000000.00000000,十进制为255.255.0.0

划分后:11111111.11111111.11100000.00000000,十进制为255.255.224.0

4.为每个子网确定地址段

确定好子网号的位数后,需要计算出每个子网的起始地址、结束地址、子网的网络ID及子网的广播地址。 

3.1 TCP提供的服务

·面向连接

·点对点通信

·传输可靠性

·全双工通信

·流接口

·可靠的连接建立

·完美的连接终止

3.2 TCP的分段和重组

TCP在进行通信时,发送端的TCP将长的传输划分为跟小的数据单元,同时将每个数据单元组装成帧,它也称为段。每个段都包括一个用来接受后重排的序列号、确认ID号及用于滑动窗口ARQ的窗口大小等字段。分段后的每个段都封装在IP数据报中,在接受端,TCP收集每个到来的数据报,然后根据序列号进行重组

TCP的段格式

 紧急指针:

URG 紧急             URG=1 紧急指针有效

ACK:确认

PSH:入栈(快速处理)

RST:重置

SYN:同步:连接握手

FIN:终止:连接终端

3.3 端口号和套接口

1.端口号

对于TCP或UDP的应用程序,都有标识该应用程序的端口号,即端口号用于区分各种应用。端口号的长度是16为,可提供2¹⁶=65536个不同的端口号。

端口号1至255作为公共端口,是保留号,并将它公布于众,这样常用的进程对应哪个端口就统一了。例如,HTTP端口号为80,FTP端口号为21,Telnet端口号为23,SMTP端口号为25,域名服务器的端口号为53等。256至1024用于UNIX服务

端口号的另一种分配方法叫本地分配,使用1024以上的端口号本地分配方式不受网络规模的限制,但通信双方互相之间需要预先知道,如将HTTP的端口号分配为8080

2.套接口

计算机的IP地址加上TCP软件使用的端口号构成了套接口。端口号是抽象的,它不指定某一特定的端口,而套接口却是具体的,是指向某一确定的应用程序的地址,通信时可根据套接口使一个进程和另一个进程进行对话。

▲有关网络地址的概念

计算机网络中有各种地址,它们对应于OSI/RM和TCP/IP的关系如下:

●数据链路层:MAC地址(物理地址、网卡地址、NIC地址)

对于以太网,就是网卡地址,它由48为二进制组成。

●网络层:网络层地址

Internet中就是IP地址,它由32为二进制值组成。IPv6地址由128位二进制组成。

●高层(应用层):端口号

例如,HTTP的端口号位80.

3.4TCP工作流程 

1.建立连接

建立连接过程使用三次握手方式,如图

2.数据传输

数据传输时,A进程的从上层协议接收数据,以递增序号的方式将数据分段封装并发送到B进程。B进程通过序列号加1的确认数据报来确认该报文

3.连续释放

TCP连续释放过程和建立连接过程类似,同样使用三次握手进行释放。一方发出释放请求后并不立即断开连接,而是等待对方确认,对方收到请求后,发回确认报文,并释放连接,发起方收到确认后才拆除连接。

 4 用户数据报协议(UDO)

UDP协议没有连接建立、释放连接过程和确认机制,因此数据传输率较高,具有更高的优越性。它被广发用于IP电话、网络会议、可视电话、现场直播、视频点播VOD等传输语言或影响等多媒体信息的场合。

4.1UDP数据报格式

4.2 UDP数据报的传输

在源端,UDP先构造一个用户数据报,然后将它交给IP,UDP便完成了工作。它没有建立连接等三次握手过程。在目标端,UDP先判断所收到的数据报的目标端口号是否与当前使用的某个端口匹配,如果是,则将数据报放入相应接收队列,否则抛弃该数据报,并向源端发送“端口不可到达”的报文。但有时虽然端口号匹配,但如果相应端口的缓冲区已满,UDP也是抛弃该数据报的。

 

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

智能推荐

图像线段检测几种方法_lines1, _, _, _ = lsd1.detect(gray_image1, 2, 2)-程序员宅基地

文章浏览阅读1.1k次。OpenCV-contrib有一个名为FastLineDetector的东西,如果它被用作LSD的替代品似乎很好。如果你有点感动,你会得到与LSD几乎相同的结果。当我将OpenCV提升到4.1.0时,LineSegmentDetector(LSD)消失了。_lines1, _, _, _ = lsd1.detect(gray_image1, 2, 2)

为什么人工智能用Python?-程序员宅基地

文章浏览阅读923次,点赞24次,收藏27次。Python 作为脚本语言,虽然上手简单、入门快,但是运行速度没有Java、C++快,应用也不够广泛,那Python到底有什么优势?来听听王道Python的主讲老师龙哥怎么说?Python被认为是一门相对容易学习和上手的编程语言,对初学者友好。其简洁的语法和清晰的代码结构使得开发人员能够更专注于解决问题而不是处理语法复杂性。这使得开发人员能够轻松地利用这些工具进行人工智能项目的开发。例如最流行的机器学习框架Scikit-learn只支持Python。

Python实例29:利用python自动创建多个Excel表格_python在excel表格内添加多张表-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏19次。实例代码import xlwings as xwapp = xw.App(visible = True, add_book = False)for i in range(1, 21): workbook = app.books.add() workbook.save(f'e:\\example\\{i}班信息表.xlsx') workbook.close()app.quit()_python在excel表格内添加多张表

uni-app实现上拉加载,下拉刷新(下拉带动画)_uniapp 加载动画-程序员宅基地

文章浏览阅读5.7w次,点赞14次,收藏81次。直接代码展示了uni-app的上拉加载动画感觉还行,废话不多说了。。。1在pages.json添加允许下拉刷新{ "path":"pages/lookuser/lookuser", "style":{ "navigationBarTitleText":"用户日志", "enablePullDownRefresh": true//就是这个 }_uniapp 加载动画

常见服务器对jdk版本的支持_jdk 不支持国产服务器-程序员宅基地

文章浏览阅读2.6k次。WebSphere5.1:JDK1.4,Servelet2.3、JSP1.2WebSphere6.0:JDK1.4,Servelet2.4、JSP2.0WebSphere6.1:JDK5.0,Servelet2.4、JSP2.0Tomcat4.1:JDK1.4,Servelet2.3、JSP1.2Tomcat5.5:JDK5.0,Servelet2.4、JSP2.0_jdk 不支持国产服务器

mysql55dialect_关于数据库方言MySQLDialect、MySQL5Dialect、MySQL55Dialect、MySQL57Dialect、MySQL8Dialect之间的区别与联系...-程序员宅基地

文章浏览阅读657次。什么是Hibernate方言?Hibernate方言是用来告诉Hibernte如何对指定的数据库生成相应的SQL语句。尽管做了很多尝试去使SQL语句标准化,但是不同的数据库支持的SQL语句还是有很多不同的地方。所以Hibernate使用方言来辅助生成正确的SQL语句。①MySQLDialect②MySQL5Dialect③MySQL55Dialect④MySQL57Dialect⑤MySQL8Di..._mysql5dialect

随便推点

剑灵力士卡刀ahk_技术宅分享 剑灵召唤一键卡刀代码使用教程-程序员宅基地

文章浏览阅读1.2k次。半自动读取f左右键模式,全自动读取1,2,f左右键模式。要鼠标有侧键,没侧键的我看心情帮你们改改……毕竟帖子老是沉,很不爽下面发代码,要写入ahk。代码1:全自动识别1,2,F,左右键,鼠标侧上键启动#IfWinActive ahk_class LaunchUnrealUWindowsClientXButton1::loop{send {1}sleep 10send {f}sleep 10send..._ahk剑灵

学习MarkDown的一点学习笔记,分享给大家!_markdown分享给别人看-程序员宅基地

文章浏览阅读685次。学习MarkDown的一点学习笔记,分享给大家!在之前写了两篇博客,后来让好友看了下,也查重自身原因,找出一下几点问题文章逻辑思维不够明晰文章整体上的结构有些杂乱,不够审美标准为此在一天的时间里面简要的看了看markdown的具体语法,本着学习一回就搞透的想法,写了一篇类似于小练习的笔记,分享给大家,希望对你们有帮助我认为这个笔记的好处有一下几点百度出来的语法,全是长篇幅的介绍,过于繁琐长_markdown分享给别人看

计算机应用技术专业是属于文科生,计算机应用技术专业是文科还是理科-程序员宅基地

文章浏览阅读2.1k次。导读:本篇文章由盛启琼整理发布,主要讲的是计算机应用技术专业是文科还是理科。共有165名用户参与了本文互动,热门互动有:计算机应用技术是文科还是理科专业?计算机专业属于文科还是理科计算机应用技术专业是文科还是理科 就业方向有哪些计算机专业有哪些。。 是文科还是理科计算机应用技术专业属于文科还是理科 就业前景怎么样&nbsp,以下是计算机应用技术专业是文科还是理科的详细内容..._陕工院计算机应用技术招文科生吗

Linux 硬件时间(RTC time(2),热度飙升-程序员宅基地

文章浏览阅读229次,点赞4次,收藏6次。硬件时间,也被称为实时时钟(RTC),是指计算机主板上的一个独立于操作系统的设备,它在电源关闭甚至断电情况下也能保持运行。其功能是记录当前的日期和时间。系统时间是计算机内部使用的时间,它通常在启动时从RTC设置,然后由系统时钟进行跟踪。系统时钟是操作系统内核的一部分,可以以毫秒或纳秒级别提供精确时间。本地时间是系统时间经过时区转换后的时间。时区是根据地理位置确定的,全球分为24个时区,每个时区大约代表15度的经度。例如,北京时间是UTC+8,而伦敦时间是UTC+0。

〖产品思维训练白宝书 - 产品思维认知篇⑤〗- 学习 [产品思维] 需要做哪些准备?_产品思维学习-程序员宅基地

文章浏览阅读3.2w次,点赞45次,收藏30次。这一章节的目的是希望在正式的学习 "产品思维" 的知识点之前,让大家能够做好准备(包括心理准备与身体上的准备),整个准备过程也是参考的产品经理的闭环工作模式来设计的。_产品思维学习

uni-app 配置编译环境与动态修改manifest,2024年最新android基础面试题及答案-程序员宅基地

文章浏览阅读208次。但是这时候又碰到了一个问题。不同的网络环境,可能还需要配置不同的小程序appid。作为一个慵懒的程序员,根据不同的网络环境,手动去修改appid那是不可能的。【注意】:复制上述代码的时候,记得把备注删除。通过以上,根据不同的编译方式,可以自动的切换不同的网络环境。重要事情说三遍(可视化创建的项目,在项目的根目录下)。二、动态修改manifest.json参数。动态配置appid,本质就是要动态配置。由以上可知,需要修改的是。1、创建如下项目结构配置。3、对应网络环境域名配置。