嵌⼊式⾯经-⽹络协议
HTTP
HTTP协议是⼀种应⽤层协议,HTTP是HyperText Transfer Protocol(超⽂本传输协议)的英⽂缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要⽤于Web浏览器和 Web服务器之间的数据交换。我们在使⽤IE或Firefox浏览⽹页或下载Web资源时,通过在地址栏中输⼊,开头的4个字母http就相当于通知浏览器使⽤HTTP协议来和host所确定的服务器进⾏通讯。
原理
HTTP是⼀个基于TCP/IP通信协议来传递数据(HTML ⽂件, 图⽚⽂件, 查询结果等)的请求应答协议。
HTTP协议⼯作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP特点:
1、简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的有GET、HEAD、POST。
2、灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
3.⽆连接:限制每次连接只处理⼀个请求。服务器处理完请求,并收到客户的应答后,即断开连接。采⽤这种⽅式可以节省传输时间。
4.⽆状态:⽆状态是指协议对于事务处理没有记忆,后续处理需要前⾯的信息,则必须重传。
http与https的区别?
HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明⽂的,是不安全的,HTTPS使⽤了SSL/TLS协议进⾏了加密处理。
常⽤的请求⽅法:
GET:请求指定的页⾯信息,并返回实体主体。
POST:向指定资源提交数据进⾏处理请求(例如提交表单或者上传⽂件)。数据被包含在请求体中。POST请求可能会导致新的资源的建⽴和/或已有资源的修改。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,⽤于获取报头
PUT:从客户端向服务器传送的数据取代指定的⽂档的内容。DELETE:请求服务器删除指定的页⾯。请求报⽂构成
http请求由请求⾏、消息报头、请求正⽂构成。请求⾏以⼀个⽅法符号开头,以空格分开,后⾯跟着请求的URL和协议的版本。响应报⽂构成。HTTP响应也由状态⾏、消息报头、空⾏和响应正⽂构成。
传输层的通信协议(TCP/UDP)
TCP提供⼀对⼀的、⾯向连接的可靠通信服务。TCP建⽴连接,对发送的数据包进⾏排序和确认,并恢复在传输过程中丢失的数据包。与TCP不同,UDP提供⼀对⼀或⼀对多的、⽆连接的不可靠通信服务。TCP和UDP都是IP层⾯的传输协议,是IP与上层之间的处理接⼝。TCP是确认包的到达,所以不丢失包(数据),顺序也是好的。
UDP不会确认包的到达,所以可能会丢失数据包,当然顺序也有可能会乱。
除了这些以外:
1. TCP是⾯向连接(连接三次握⼿、断开四次挥⼿)的,所以稳定、可靠,那相对就慢了
⽐如平时的:⼤⽂件传输,右键,http等⽤的都是tcp协议
2. UDP是⾯向⽆连接的,所以不稳定,但是相对快,实时性⾼、传送数据⼤⼩限制
⽐如平时:做什么现场直播,视频通话啥的
(SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建⽴连接时使⽤的握⼿信号。ACK (Acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的⼀种传输类控制字符。FIN是⽤来扫描保留的端⼝,发送⼀个FIN包(或者是任何没有ACK或
SYN标记的包)到⽬标的⼀个开放的端⼝,然后等待回应。许多系统会返回⼀个复位标记。
在客户机和服务器之间建⽴正常的TCP⽹络连接,客户机⾸先发出⼀个SYN消息,服务器使⽤SYN+ACK应答表⽰接收到了这个消息,最后客户机再以ACK消息响应。
ssl协议全称在客户端与服务器结束TCP连接时,客户端⾸先发送⼀个FIN包到服务器,服务器收到后反馈⼀个ACK,然后再发送⼀个FIN包给客户端,客户端接收后在放送⼀个ACK消息回应,到此此次连接完全断开。)
在TCP和UDP头部分,有“源端⼝”和“⽬标端⼝”段,主要⽤于显⽰发送和接收过程中的⾝份识别信息。IP 地址和端⼝号合在⼀起被称为“套接字”。TCP端⼝⽐较复杂,其⼯作⽅式与UDP端⼝不同。UDP端⼝对于基于UDP的通信作为单⼀消息队列和⽹络端点来操作,⽽所有TCP通信的终点都是唯⼀的连接。每个
TCP连接由两个端点唯⼀识别。由于所有TCP连接由两对 IP 地址和TCP端⼝唯⼀识别(每个所连主机都有⼀个地址/端⼝对),因此每个TCP服务器端⼝都能提供对多个连接的共享访问.
TCP全称是Transmission Control Protocol,中⽂名为传输控制协议,它可以提供可靠的、⾯向连接的⽹络数据传递服务。传输控制协议主要包含下列任务和功能:
tcp功能
对程序发送的⼤块数据进⾏分段和重组。确保正确排序及按顺序传递分段的数据。
通过计算校验和,进⾏传输数据的完整性检查。根据数据是否接收成功发送肯定消息。通过使⽤选择性确认,也对没有收到的数据发送否定确认。为必须使⽤可靠的、基于会话的数据传输程序,如客户端/服务器和电⼦邮件程序,提供⾸选传输⽅法。
TCP⼯作原理
⾸先发送⽅主机向接收⽅主机发起⼀个建⽴连接的同步(SYN)请求;接收⽅主机在收到这个请求后向发送⽅主机回复⼀个同步/确认(SYN/ACK)应答;发送⽅主机收到此包后再向接收⽅主机发送⼀个确认(ACK),此时TCP连接成功建⽴.⼀旦初始的三次握⼿完成,在发送和接收主机之间将按顺序发送和确认段。关闭连接之前,TCP使⽤类似的握⼿过程验证两个主机是否都完成发送和接收全部数据。完成
三次握⼿,客户端与服务器开始传送数据。
UDP全称是User Datagram Protocol,中⽂名为⽤户数据报协议(报⽂协议:短息等)。UDP 提供⽆连接的⽹络服务,该服务对消息中传输的数据提供不可靠的、最⼤努⼒传送。这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。每个数据限制在64k以内。(存在掉帧、掉数据包)。
四、简述七层模型与四层模型的区别?列出常见的⽹络协议?
七层: OSI 开放系统互联参考模型,它是理论的,参考模型
物理层->数据链路层->⽹络层->传输层->会话层->表⽰层->应⽤层
(电脑)(交换机)(路由器)
物理层:RJ45、CLOCK、IEEE802.3
数据链路层:PPP、FR、HDLC、VLAN、MAC
⽹络层:IP、IPX、OSPF、RIP、IGRP、ICMP、ARP、RARP
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表⽰层:JPEG、MPEG、ASII
应⽤层:Telnet、HTTP、FTP、WWW、NFS、SMTP
四层: TCP/IP模型 ,现在实际应⽤的这⼀层
⽹际接⼝层->互联⽹层->传输层->应⽤层
物理层:主要定义的是—传输介质⽐如 RJ-45等这⼀层没啥协议,都是规范啥的
数据链路层:就是平时的局域⽹,局域⽹内的数据传输 MAC层
传输层:TCP、UDP
应⽤层:HTTP、HTTPS、DNS、SMTP 发送邮件端⼝、POP3收邮件端⼝
FTP端⼝,负责传出数据,端⼝负责发起和建⽴连接TELNET
DHCP—动态主机配置协议, 客户端请求⽤的67端⼝,服务器回应⽤的是68端⼝
常见协议:
IP (Internet Protocol)⽹际协议
ICMP (Internet Control Message Protocol)⽹络控制信息协议 (平时的ping)
IGMP (Internet Group Management Protocol)组管理协议
NAT (Network Address Translation) ⽹络地址转换
Socket(套接字层、插座---AT&T)
Socket就是为⽹络服务提供的⼀种机制。它是使⽤标准Unix ⽂件描述符 (file descriptor) 和其它程序通讯的⽅式。套接字(socket)是通信的基⽯,是⽀持TCP/IP协议的⽹络通信的基本操作单元。它是⽹络通信过程中端点的抽象表⽰,包含进⾏⽹络通信必须的五种信息:
(连接使⽤的协议,本地主机的IP地址,本地进程的协议端⼝,远地主机的IP地址,远地进程的协议端⼝)。
在Unix中,⽹络即是socket,并不局限在TCP/UDP, socket可以⽤于⾃定义协议。
通信的两端都是socket
⽹络通信其实就是socket间的通信
数据在来两个socket间通过io传输
Socket开始是纯c语⾔的,是跨平台的。
套接字有两个流:⼀个输⼊流和⼀个输出流
套接字的每⼀端都有两个流。
HTTP与TCP区别和联系
联系:http是要基于TCP连接基础上的,简单的说,TCP就是单纯建⽴连接,不涉及任何我们需要请求的实际数据,简单的传输。http是⽤来收发数据,即实际应⽤上来的。
区别:TCP是底层通讯协议,定义的是数据传输和连接⽅式的规范。
HTTP是应⽤层协议,定义的是传输数据的内容的规范
HTTP协议中的数据是利⽤TCP协议传输的,所以⽀持HTTP也就⼀定⽀持TCP
HTTP⽀持的是www服务,⽽TCP/IP是协议它是Internet国际互联⽹络的基础。TCP/IP是⽹络中使⽤的基本的通信协议。 TCP/IP实际上是⼀组协议,它包括上百个各种功能的协议,如:远程登录、⽂件传输和电⼦邮件等,⽽TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,⽽不单单是TCP和IP。
为什么连接的时候是三次握⼿,关闭的时候却是四次握⼿?
答:因为当Server端收到Client端的SYN连接请求报⽂后,可以直接发送SYN+ACK报⽂。其中ACK报⽂是⽤来应答的,SYN报⽂是⽤来同步的。但是关闭连接时,当Server端收到FIN报⽂时,很可能并不会
⽴即关闭SOCKET,所以只能先回复⼀个ACK报⽂,告诉Client端,"你发的FIN报⽂我收到了"。只有等到我Server端所有的报⽂都发送完了,我才能发送FIN报⽂,因此不能⼀起发送。故需要四步握⼿。
为什么TIME_WAIT状态需要经过2MSL(最⼤报⽂段⽣存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报⽂都发送完毕,我们可以直接进⼊CLOSE状态了,但是我们必须假象⽹络是不可靠的,有可以最后⼀个ACK丢失。所以TIME_WAIT状态就是⽤来重发可能丢失的ACK报⽂。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论