网络模型与TCP协议

什么是web

Web浏览器从Web服务器端获取文件资源等信息,从而显示出Web页面。Web使用一种名为HTTP的协议作为规范,完成从客户端到服务器端等等一些列的运作流程。
客户端不一定代表浏览器,但浏览器一定是客户端。
http版本:http1.0,主流:http1.1,http2.0

URI与URL的区别:

URL:统一资源定位符
URI:统一资源标识符
URI用字符串标识某一互联网的资源,而URL表示资源的地点。URL是URI的子集。
表示指定的URI,要使用涵盖全部必要信息的绝对URI,绝对以及相对的URL。相对URL是指从浏览器中基本的URI处指定的URL。刑如:/image/logo.gif
绝对URI的格式:


绝对URI格式.jpg

URL 如何编码解码?为什么要编码?

URL只能使用ASCII字符集通过因特网进行发送,也就是说URL中只能包含英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号,这就意味着如果URL中包含汉字就必须编码后使用。麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致了"URL编码"成为了一个混乱的领域。
解决办法:使用一些具体的方式进行编码。

  • 两种编码方式
    -- encodeURI()
    -- encodeURIComponent()
  • 两种编码方式
    -- decodeURI()
    -- decodeURIComponent()
    区别
    encodeURI方法不会对下列字符编码
1\. ASCII字母
2\. 数字
3\. ~!@#$&*()=:/,;?+'

encodeURIComponent方法不会对下列字符编码

1\. ASCII字母
2\. 数字
3\. ~!*()'

所以encodeURIComponent比encodeURI编码的范围更大。
实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。
如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。 encodeURI("http://blog.jirengu.com/?cat=11&a=饥人谷"); //"http://blog.jirengu.com/?cat=11&a=%25E9%25A5%25A5%25E4%25BA%25BA%25E8%25B0%25B7"
其中,汉字被编码。但是如果你用了encodeURIComponent,那么结果变为

"http%3A%2F%2Fblog.jirengu.com%2F%3Fcat%3D11%26a%3D%25E9%25A5%25A5%25E4%25BA%25BA%25E8%25B0%25B7

OSI的7层模型是什么

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),由国际标准化组织于1984年提出。

  1. 应用层
    应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:** HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3**等。
  2. 表示层
    表达层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。
  3. 会话层
    会话层(Session Layer)负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
  4. 传输层
    传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:TCP、UDP等。
  5. 网络层
    网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP)等。
  6. 数据链路层
    数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
  7. 物理层
    物理层(Physical Layer)在局部局域网上传送数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。

TCP/IP4层模型是什么

  1. 应用层:
    应用层是大多数普通与网络相关的程序为了通过网络与其他程序通信所使用的层,这个层的处理过程是应用特有的;数据从网络相关的程序以这种应用内部使用的格式进行传送。然后被编码成标准协议的格式,每一个应用层协议一般都是使用到传输层协议TCP和UDP协议之一。
    运行在TCP协议上的协议:
  • HTTP(80端口):主要用于普通浏览。
  • HTTPS(443端口):HTTP协议的安全版本。
  • FTP(20和21端口):由名知义,用于文件传输。
  • POP3(110端口):收邮件用。
  • SMTP(25端口):用来发送电子邮件。
  • SSH(22端口):用于加密安全登录用。
    运行在UDP协议上的协议:
  • DHCP(67端口,动态主机配置协议):动态配置IP地址。
    其他协议:
  • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。
  • SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的手机和网络管理。
  • ARP(Addredd Resoultion Protocol,地址解析协议):用于动态解析以太网硬件地址。
  1. 传输层:
    解决诸如端到端的可靠性(数据是否已经达到目的地?)和保证数据按照正确的顺序到大这样的问题。TCP和UDP都是传输层协议。
  2. 网络层:
    解决单一网络上的传输数据包的问题,IP协议是网络层协议。
  3. 数据链路层:
    它是数据包从一个设备的网络层传输到另一个设备的网络层的方法。这个过程能够在网卡的软件驱动程序中控制或者专用芯片中控制。这将完成诸如添加报头准备发送、通过实体介质实际发送这样一些数据链路功能。另一端,链路层将完成数据帧接收、去除报头并且将接收到的包传到网络层。包括操作系统、硬件的设备驱动、NIC(网络适配器,网卡)、光纤等物理可见部分。

理解应用层协议是什么

http协议:具有一种规定的协议,HTTP协议的职责:作为客户端职责是:生成针对目标Web服务器的HTTP请求报文;作为服务器端的职责是:对Web服务器的请求内容进行处理,并生成响应报文。

理解传输层协议是什么

TCP:传输控制协议,是一种面向连接的,可靠的的基于字节流的传输层协议。
UDP:用户数据报协议,是不可靠的传输层协议。
TCP协议位于传输层,提供可靠的字节流服务。
字节流服务:为了传输方便,将大块数据分割成以报文段为单位的数据包进行管理。
可靠的传输服务:能够把数据准确可靠的传给对方。

如何理解TCP/IP四层模型

利用TCP/IP协议族进行网路通信时,会通过分层顺序与对方进行通信,发送端从应用层往下走,接收端从链路层往上走。
以HTTP举例:发送端的客户端在应用层发出想看某个Web页面的HTTP请求报文,接着,在传输层(TCP协议)把接收到的HTTP请求报文进行分割,并且在各个报文山打上标记序号及端口号传输给网络层。网络层(IP协议)增加作为通信目的地的MAC地址后转发给数据链路层。接收端从数据链路层接收到数据,按层序向上发送,一直到应用层,真正接收到客户端发来的HTTP请求。
在通过四层模型发送数据和接受数据的时候,会对数据进行封装。

理解TCP协议的三步握手流程

用三次握手建立TCP连接
TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的、可靠的、基于字节流的传输通信协议,与之对应的是UDP协议(User Dtagram Protocol,用户数据协议),是不可靠的传输层协议。


用三次握手建立TCP连接.PNG
  1. 客户端发送SYN报文给服务器端,序列号是n,进入SYN_SEND状态。
  2. 服务器端收到SYN报文,回应一个ACK(序列号是n+1)同时发送一个SYN(序列号是m),进入SYN_RECV状态。
  3. 客户端收到服务器端的SYN报文,回应一个ACK(序列号是m+1)报文,进入Estabished状态。
    中间任何一个地方出现错误,就不能建立三次握手。若是出现中断,TCP协议会再次以相同的顺序发送相同的数据包。SYN请求报文,ACK回应报文。

理解TCP协议的四步挥手流程

用四次挥手释放TCP连接。


用四次挥手释放TCP连接.PNG

服务器终止数据传输需要一定的时间。

  1. 客户端发送一个FIN,告诉浏览器想关闭链接。
  2. 服务器收到这个FIN,返回一个ACK。
  3. 服务器通知应用程序关闭网络连接,应用程序关闭后通知服务器,服务器发送一个FIN给客户端。
  4. 客户端发回ACK报文确认。
    FIN = 1表示想要关闭应用程序。
    ACK = 1表示响应请求。

为什么挥手要四次

这是因为服务端的LISTEN状态下的SOCKET当收到客户端建立连接的请求的SYN报文后,它可以把ACK和SYN放在一个报文里来发送,但是关闭连接时,当服务器收到客户端的FIN报文通知后,服务器只能发一个回应报文ACK,然后通知应用程序,应用程序完成全部数据并确定可以终止了,服务器才能发送FIN告诉客户端可以真正断开连接了。所以这一步ACK报文和FIN报文需要分开发送,因此多了一个步骤。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容