编程语言
首页 > 编程语言> > 网络编程之TCP/IP各层详解

网络编程之TCP/IP各层详解

作者:互联网


网络编程之TCP/IP各层详解

我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理。

首先,用户感知到的只是最上面一层——应用层,自上而下每层都依赖于下一层,所以我们从最下层开始切入,比较好理解。

每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

一、物理层

由来:孤立的计算机之间要一起“玩耍”,就必须接入Internet,即计算机之间必须完成组网。

物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。

二、数据链路层

由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。

数据链路层功能:定义了电信号的分组方式。

以太网协议:

早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议Ethernet。

Ethernet规定:

head包含:(固定18个字节)

data包含:(最短46字节,最长1500字节)

head长度+data长度 = 最短64字节或桩长1518字节,超过最大限制就分片发送。

MAC地址:

head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)。

广播:

有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)。

ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼。

三、网络层

网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。

上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关。

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。

1、IP协议:

2、子网掩码:

所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

子网掩码是用来标识一个IP地址的哪些位是代表网络位,以及哪些位是代表主机位。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

为什么要区分网络位和主机位?

这就像寄信,你给你的南方姑娘寄信,她肉身在厦门,详细地址是厦门鼓浪屿三街27号,那网络位就相当于城市,详细地址就是主机位,网络位帮你定位到城市,主机位帮你找到你的南方姑娘。 路由器通过子网掩码来确定哪些是网络位,哪些是主机位。

区分网络位和主机位是为了划分子网,就是把一个大网络分成多个小网络,为什么要分子网呢?

划分子网本质上就是借主机位到给网络位,每借一位主机位,这个网段的可分配主机就会越少,比如192.168.1.0/24可用主机255个,借一位变成192.168.1.0/25,那可用主机就从255-128=127个了(从最大的值开始借),再借一位192.168.1.0/26,那可用主机数就变成了255-(128+64)=63个啦。

3、IP地址分类:

IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

1、A类IP地址:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。

2、B类IP地址 :一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。

<iframe data-google-container-id="a!3" data-google-query-id="CJaZzaKj8esCFf3CTAIdmlAMqQ" data-load-complete="true" frameborder="0" height="280" id="aswift_3" marginheight="0" marginwidth="0" name="aswift_3" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6527383233809815&output=html&h=280&adk=1228683743&adf=719034167&w=1120&fwrn=4&fwrnh=100&lmt=1600383016&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=5621362615&psa=1&guci=2.2.0.0.2.2.0.0&ad_type=text_image&format=1120x280&url=https%3A%2F%2Fwww.bbsmax.com%2FA%2Fx9J2PLmnd6%2F&flash=0&fwr=0&pra=3&rh=200&rw=1120&rpe=1&resp_fmts=3&wgl=1&fa=27&adsid=ChAI8JKM-wUQ0KzIhqWysqR2Ei8A9rtQF2dUoj4PJa1gnCxurYmwsF710w5ND1KXnlBIVa20ICglWTs-Nsy02f8U9w&dt=1600383016808&bpp=2&bdt=536&idt=-M&shv=r20200914&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dae188afb69691487%3AT%3D1600382971%3AS%3DALNI_MYoH-6Rtt5JxgLmoEG9MMtemg1YNA&prev_fmts=1120x200%2C0x0&nras=2&correlator=4856819853711&frm=20&pv=1&ga_vid=198077031.1600382986&ga_sid=1600383017&ga_hid=1553028921&ga_fc=0&iag=0&icsg=8933024&dssz=17&mdo=0&mso=8&u_tz=480&u_his=2&u_java=0&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=24&u_nplug=3&u_nmime=4&adx=72&ady=3923&biw=1263&bih=700&scr_x=0&scr_y=0&eid=21065724&oid=3&pvsid=2038799665238141&pem=753&ref=https%3A%2F%2Fwww.bbsmax.com%2FA%2FGkz1DZmNdR%2F&rx=0&eae=0&fc=384&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C770%2C1280%2C700&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8320&bc=31&jar=2020-08-23-03&ifi=3&uci=a!3&btvi=1&fsb=1&xpc=5ZFtD2cegU&p=https%3A//www.bbsmax.com&dtd=21" width="1120"></iframe> <iframe data-google-container-id="a!7" data-google-query-id="CI3Zs6Oj8esCFYJwYAodcwgD5A" data-load-complete="true" frameborder="0" height="280" id="aswift_7" marginheight="0" marginwidth="0" name="aswift_7" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6527383233809815&output=html&h=280&adk=1347667754&adf=1253896732&w=1120&fwrn=4&fwrnh=100&lmt=1600383018&rafmt=1&to=qs&pwprc=5621362615&psa=1&guci=2.2.0.0.2.2.0.0&format=1120x280&url=https%3A%2F%2Fwww.bbsmax.com%2FA%2Fx9J2PLmnd6%2F&flash=0&fwr=0&rpe=1&resp_fmts=3&wgl=1&adsid=ChAI8JKM-wUQ0KzIhqWysqR2Ei8A9rtQF2dUoj4PJa1gnCxurYmwsF710w5ND1KXnlBIVa20ICglWTs-Nsy02f8U9w&dt=1600383016817&bpp=1&bdt=545&idt=1&shv=r20200914&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dae188afb69691487%3AT%3D1600382971%3AS%3DALNI_MYoH-6Rtt5JxgLmoEG9MMtemg1YNA&prev_fmts=1120x200%2C0x0%2C1120x280%2C1120x280%2C1120x280%2C1120x280&nras=5&correlator=4856819853711&frm=20&pv=1&ga_vid=198077031.1600382986&ga_sid=1600383017&ga_hid=1553028921&ga_fc=0&iag=0&icsg=42487456&dssz=18&mdo=0&mso=8&u_tz=480&u_his=2&u_java=0&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=24&u_nplug=3&u_nmime=4&adx=72&ady=3939&biw=1263&bih=700&scr_x=0&scr_y=1165&eid=21065724&oid=3&psts=AGkb-H__LEw3nKP8CGOFdIwmxP8G96aNCc4Fu8-XcFXnSUQACm0mGgnAMwxV9lhLyxI&pvsid=2038799665238141&pem=753&ref=https%3A%2F%2Fwww.bbsmax.com%2FA%2FGkz1DZmNdR%2F&rx=0&eae=0&fc=896&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C770%2C1280%2C700&vis=1&rsz=%7C%7CeEbr%7C&abl=CS&pfx=0&fu=8320&bc=31&jar=2020-08-23-03&ifi=7&uci=a!7&btvi=5&fsb=1&xpc=F32WTkdgLb&p=https%3A//www.bbsmax.com&dtd=1938" width="1120"></iframe>

3、C类IP地址:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

4、D类地址用于多点广播(Multicast): D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

5、E类IP地址 以“llll0”开始,为将来使用保留。

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

回环地址(127.0.0.1) 又称为本机地址,那它跟0.0.0.0是什么区别呢?那得先了解回环接口

环回接口(loopback)。平时我们用127.0.0.1来尝试自己的机器服务器好使不好使。走的就是这个loopback接口。对于环回接口,有如下三点值得注意:

4、IP报文:

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输,要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。这是后话,暂且不提。

IP协议头

挨个解释它是教科书的活,我们感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64。

5、ARP协议

ARP协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议。

ARP协议功能:播的方式发送数据包,获取目标主机的mac地址。

协议工作方式:每台主机ip都是已知的。

例如:主机172.16.10.10/24访问172.16.10.11/24。

1、首先,通过ip地址和子网掩码区分出自己所处的子网。

场景数据包地址
同一子网 目标主机mac,目标主机ip
不同子网 网关mac,目标主机ip

2、分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)。

 源mac目标mac源ip目标ip数据部分
发送端主机 发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

3、这个包会以广播的方式在发送端所处的子网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac。

查看本机arp表的命令(在终端窗口中输入):arp -a

6、ICMP协议

前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。

当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会。

<iframe data-google-container-id="a!4" data-google-query-id="CNW5zqKj8esCFSzKTAId4MUIzQ" data-load-complete="true" frameborder="0" height="280" id="aswift_4" marginheight="0" marginwidth="0" name="aswift_4" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6527383233809815&output=html&h=280&adk=1228683743&adf=1253896732&w=1120&fwrn=4&fwrnh=100&lmt=1600383016&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=5621362615&psa=1&guci=2.2.0.0.2.2.0.0&ad_type=text_image&format=1120x280&url=https%3A%2F%2Fwww.bbsmax.com%2FA%2Fx9J2PLmnd6%2F&flash=0&fwr=0&pra=3&rh=200&rw=1120&rpe=1&resp_fmts=3&wgl=1&fa=27&adsid=ChAI8JKM-wUQ0KzIhqWysqR2Ei8A9rtQF2dUoj4PJa1gnCxurYmwsF710w5ND1KXnlBIVa20ICglWTs-Nsy02f8U9w&dt=1600383016808&bpp=1&bdt=536&idt=-M&shv=r20200914&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dae188afb69691487%3AT%3D1600382971%3AS%3DALNI_MYoH-6Rtt5JxgLmoEG9MMtemg1YNA&prev_fmts=1120x200%2C0x0%2C1120x280&nras=3&correlator=4856819853711&frm=20&pv=1&ga_vid=198077031.1600382986&ga_sid=1600383017&ga_hid=1553028921&ga_fc=0&iag=0&icsg=42487456&dssz=18&mdo=0&mso=8&u_tz=480&u_his=2&u_java=0&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=24&u_nplug=3&u_nmime=4&adx=72&ady=6255&biw=1263&bih=700&scr_x=0&scr_y=0&eid=21065724&oid=3&pvsid=2038799665238141&pem=753&ref=https%3A%2F%2Fwww.bbsmax.com%2FA%2FGkz1DZmNdR%2F&rx=0&eae=0&fc=384&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C770%2C1280%2C700&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8320&bc=31&jar=2020-08-23-03&ifi=4&uci=a!4&btvi=2&fsb=1&xpc=YtUMK8dgiD&p=https%3A//www.bbsmax.com&dtd=28" width="1120"></iframe>

我们一般主要用ICMP协议检测网络是否通畅,基于ICMP协议的工具主要有ping 和traceroute。

ping

ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。

traceroute(Linux后者mac os)或者 tracert(windows系统)

用来查看从当前主机到某地址一共经过多少条路由。

四、传输层

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,迅雷等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序呢?答案就是端口,端口即应用程序与网卡关联的编号。

传输层功能:建立端口到端口的通信。

补充:端口范围0-65535,0-1023为系统占用端口。

传输层有两种协议,TCP和UDP,见下图。

1、TCP协议

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

为什么tcp是可靠的数据传输?

最可靠的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止。

TCP报文

TCP的3次握手和4次挥手:

2、UDP协议

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

3、总结

TCP协议虽然安全性很高,但是网络开销大,而UDP协议虽然没有提供安全机制,但是网络开销小,在现在这个网络安全已经相对较高的情况下,为了保证传输的速率,我们一般还是会优先考虑UDP协议!

五、应用层

1、应用层简介

应用层直接和应用程序接口并提供常见的网络应用服务。它是开放系统的最高层,是直接位应用程序提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE。

位于计算机网络体系结构的最上层,前面四层做的所有事情就是为了他服务,他也是设计和建立计算机网络的最终目的,通俗的讲,就是我们开发的应用软件,就处于这一层,比如,QQ,浏览器访问网页,等等你看得到的应用软件都是在这一层,但是这些软件在运行的过程中,也需要依靠一些特定的协议才能完成相应的功能,比如浏览器通过网址访问网页,其中是如何做到的,这就是我们所要学习的东西。

2、应用层中的两种应用软件:客户/服务器和P2P体系结构

(1)客户/服务器

这种类型,就是我们很熟悉的客户端,服务器模型,客户端请求服务器,服务器响应客户端这样的一种方式进行“交流”。

(2)P2P

也称为对等体系结构。P2P相当于每个人的电脑度可以当服务器,也可以当客户端,不单单限制于只能客户端访问服务器,你自己的计算机可以去访问别人的计算机上的内容,别的同样可以访问你计算机上的内容,这样达到一种共享的状态。

3、DNS协议

(1)DNS概述

Domain Name System 域名系统。也可以叫做域名解析协议。在我们在浏览器访问网页的时候,通常度是用我们所熟悉的一连串有意义的英文字符标识,比如www.baidu.com、www.sohu.com等。

但是我们学了前面的知识,计算机并不是通过这些字符串去找到对应的计算机,而是通过32位的二进制,也就是我们的IP地址来找。所以就有了DNS协议。他的作用就是将域名解析成对应的IP地址。

<iframe data-google-container-id="a!5" data-google-query-id="CJDO06Kj8esCFbzMTAIdorwK4A" data-load-complete="true" frameborder="0" height="280" id="aswift_5" marginheight="0" marginwidth="0" name="aswift_5" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6527383233809815&output=html&h=280&adk=1228683743&adf=2678055208&w=1120&fwrn=4&fwrnh=100&lmt=1600383016&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=5621362615&psa=1&guci=2.2.0.0.2.2.0.0&ad_type=text_image&format=1120x280&url=https%3A%2F%2Fwww.bbsmax.com%2FA%2Fx9J2PLmnd6%2F&flash=0&fwr=0&pra=3&rh=200&rw=1120&rpe=1&resp_fmts=3&wgl=1&fa=27&adsid=ChAI8JKM-wUQ0KzIhqWysqR2Ei8A9rtQF2dUoj4PJa1gnCxurYmwsF710w5ND1KXnlBIVa20ICglWTs-Nsy02f8U9w&dt=1600383016808&bpp=1&bdt=536&idt=-M&shv=r20200914&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dae188afb69691487%3AT%3D1600382971%3AS%3DALNI_MYoH-6Rtt5JxgLmoEG9MMtemg1YNA&prev_fmts=1120x200%2C0x0%2C1120x280%2C1120x280&nras=4&correlator=4856819853711&frm=20&pv=1&ga_vid=198077031.1600382986&ga_sid=1600383017&ga_hid=1553028921&ga_fc=0&iag=0&icsg=42487456&dssz=18&mdo=0&mso=8&u_tz=480&u_his=2&u_java=0&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=24&u_nplug=3&u_nmime=4&adx=72&ady=8810&biw=1263&bih=700&scr_x=0&scr_y=0&eid=21065724&oid=3&pvsid=2038799665238141&pem=753&ref=https%3A%2F%2Fwww.bbsmax.com%2FA%2FGkz1DZmNdR%2F&rx=0&eae=0&fc=384&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C770%2C1280%2C700&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8320&bc=31&jar=2020-08-23-03&ifi=5&uci=a!5&btvi=3&fsb=1&xpc=nkotDoXecn&p=https%3A//www.bbsmax.com&dtd=33" width="1120"></iframe>

因为让我们人去记那些IP地址,很难记得住,所以就想办法让IP地址转变为了现在的域名,在进行访问的时候,只需要将域名解析为对应的IP地址就行了,这个域名也很有讲究,其中分为好多层域名,是独一无二的。这里不细讲这个,只要我们知道,域名通过DNS能找到对应的IP地址就行了。

(2)DNS协议工作过程

   1)通过域名访问网页

   2)计算机会先将域名发送到一个解析域名的服务器上

     2.1)在其服务器上有很多服务器,能解析各种各样的域名,比如有专门解析.org的,解析.com的,解析.net的。等等,最主要的有一个根域名服务器

     2.2)域名解析(在服务器上查找IP地址)的过程有两种算法,迭代查询,递归查询。一般是两种查询的结合

     2.3)本机计算机找到其中一台解析域名的服务器(可能是.com),如果没有找到对应的IP地址,那么就会去找根域名服务器,根域名服务器知道所有的子服务器,所以他肯定知道该域名所对应的IP地址在那个子服务器中,所以告诉第一次查询的服务器要他去另一台服务器上找,找到了,就将其返回给计算机,以后在有另一台计算机也通过这个域名访问,那么第一台服务器会有原来的域名IP地址的缓存,就不用去找根服务器了。

   3)找到了,就能找到我们要访问的服务器了。

4、HTTP协议

(1)HTTP简介

   1)超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

   2)HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。

<iframe data-google-container-id="a!6" data-google-query-id="CIno06Kj8esCFQkDYAodeWQNIw" data-load-complete="true" frameborder="0" height="280" id="aswift_6" marginheight="0" marginwidth="0" name="aswift_6" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6527383233809815&output=html&h=280&adk=1228683743&adf=2262654460&w=1120&fwrn=4&fwrnh=100&lmt=1600383016&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=5621362615&psa=1&guci=2.2.0.0.2.2.0.0&ad_type=text_image&format=1120x280&url=https%3A%2F%2Fwww.bbsmax.com%2FA%2Fx9J2PLmnd6%2F&flash=0&fwr=0&pra=3&rh=200&rw=1120&rpe=1&resp_fmts=3&wgl=1&fa=27&adsid=ChAI8JKM-wUQ0KzIhqWysqR2Ei8A9rtQF2dUoj4PJa1gnCxurYmwsF710w5ND1KXnlBIVa20ICglWTs-Nsy02f8U9w&dt=1600383016808&bpp=1&bdt=536&idt=1&shv=r20200914&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dae188afb69691487%3AT%3D1600382971%3AS%3DALNI_MYoH-6Rtt5JxgLmoEG9MMtemg1YNA&prev_fmts=1120x200%2C0x0%2C1120x280%2C1120x280%2C1120x280&nras=5&correlator=4856819853711&frm=20&pv=1&ga_vid=198077031.1600382986&ga_sid=1600383017&ga_hid=1553028921&ga_fc=0&iag=0&icsg=42487456&dssz=18&mdo=0&mso=8&u_tz=480&u_his=2&u_java=0&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=24&u_nplug=3&u_nmime=4&adx=72&ady=9957&biw=1263&bih=700&scr_x=0&scr_y=0&eid=21065724&oid=3&pvsid=2038799665238141&pem=753&ref=https%3A%2F%2Fwww.bbsmax.com%2FA%2FGkz1DZmNdR%2F&rx=0&eae=0&fc=384&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C770%2C1280%2C700&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8320&bc=31&jar=2020-08-23-03&ifi=6&uci=a!6&btvi=4&fsb=1&xpc=jMwXYjb03G&p=https%3A//www.bbsmax.com&dtd=38" width="1120"></iframe>

   3)通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

   4)通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

(2)统一资源定位符URL

URL:统一资源定位符,通过下面格式,可以看出,就是用来定位我们所需要资源在服务器上的位置。

格式:://:/

协议:http

主机:域名/IP地址,原理度一样,到头来还是会转换为IP地址,通过这个才能找到目标服务器

端口: 在传输层需要使用的,访问目的主机的哪个端口号。 

路径:精准的定位我们所需要的资源位置、    

平常会省略协议和端口号,因为这些都是默认的,在访问主页时,路径也会省略。比如www.baidu.com这个默认进入百度的主页完整写法 http://www.baidu.com:80/index.html 。

(3)超文本传输协议

作用:怎样向服务器请求文档、服务器怎么把文档传送给浏览器,通俗点讲,就是我们想服务器访问网页资源时,服务器如何把网页上的东西传给我们。

客户端向服务器:请求报文        服务器向客户端:响应报文

其实就是:在通过URL访问你服务器时,就会发送一个请求报文,告诉服务器需要哪些东西,服务器知道后,返回一个响应报文给客户端,其中就会带有一些网页信息。就是通过这个来达到传送网页资源的目的,现在来具体看看,请求报文和响应报文的格式。

(4)请求和响应报文的格式

可参见我的另一篇博文https://www.cnblogs.com/Kwan-C/p/11459247.html

(5)HTTP协议的功能

 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

 HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

 我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

标签:协议,IP,IP地址,各层,mac,TCP,地址,主机,服务器
来源: https://www.cnblogs.com/wpf-blogs/p/13689020.html