TCP/IP参考模型

层级               数据形式                      主要功能                                 协议(只标注较主要)

应用层           数据段              文件传输、邮件、文件服务                FTP、HTTP、DNS

传输层           数据包              提供端对端的接口                                  TCP、UDP

网络层           数据帧              为数据包传输提供路由                                 IP

数据链路层   比特流              以二进制形式在物理某体上传输电流           ARP

----------------------------------------------------------------------------------------------------------------------------

HTTP(该协议主要在C/S架构中使用)---超文本传输协议

客户端发起“请求报文”

URL(Uniform Resource Locator)

Protocol://HOST:port/path/to/file

客户端请求分为静态页面和动态

静态页面由apache/nginx等直接解释即可。

动态网页,服务器端的存储文档非HTML格式,而是编程语言开发的脚本,脚本接受参数之后在服务器运行一次,运行完成之后生产HTML格式的文档,把生产的文档发给客户端。一般使用到php、tomcat等

服务端回应“响应报文”(在服务端接受客户端请求的前提下)

web服务器的主要操作:

1、建立连接--接受或拒绝客户端连接请求;

2、接受请求--通过网络读取HTTP请求报文;

3、处理请求--解析请求报文并做出相应的动作;

4、访问资源--访问请求报文中的相关的资源;

5、构建响应--使用正确的首部生成HTTP相应报文;

6、发送响应--向客户端发送生成的响应报文;

7、记录日志--将已经完成的HTTP事务记录日志文件;

HTTP请求返回的状态代码:

1xx:   纯信息

2xx: “成功"类的信息(200、201、202)

3xx:   重定向类的信息(301、302、304)

4xx:   客户端错误类的信息(404)

5xx:   服务器端错误类的信息(500、502、503)

常见状态代码、状态描述、说明:

200   OK      //客户端请求成功

400   Bad Request  //客户端请求有语法错误,不能被服务器所理解

401    Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403    Forbidden  //服务器收到请求,但是拒绝提供服务

404   Not Found  //请求资源不存在,eg:输入了错误的URL

500    Internal Server Error //服务器发生不可预期的错误

503    Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

--------------------------------------------------------------------------------------------------------------------------

请求报文:

GET / HTTP/1.1

Connection:keep-alive

--------------------------------------------------------------------------------------------------------------------------

响应报文语法:

--------------------------------------------------------------------------------------------------------------------------

DNS(Domain Name System---域名系统)

域名:www.magedu.com(主机名,FQDN:Full Qualified Domain Name, 完全限定域名)

DNS:名称解析,Name Resolving 名称转换(背后有查询过程,数据库)

FQDNIP

www.mabeyx.com.      172.16.0.1

mail.mabeyx.com.      172.16.0.2

查询方式:

递归:只发出一次请求

迭代:发出多次请求

解析:

正向:FQDN-->IP

反向:IP-->FQDN

简介:全球共设置13台根域名解析服务器(1主、12从),主要作用为解析.com、.net、.org等一级域名。

--------------------------------------------------------------------------------------------------------------------------

FTP (File Transfer Protocol---文件传输协议):该协议主要在C/S架构中使用

FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制(跨平台传输)。

客户端使用完整URL进行文件获取

ftp://[用户名:口令@]ftp服务器域名:[端口号]

用户感知为文件的 “上传“ 与 ”下载“。

--------------------------------------------------------------------------------------------------------------------------

TCP与UDP协议:

TCP协议是基于连接的可靠协议,有流量控制和差错控制,也正因为有可靠性的保证和控制手段,所以传输效率比UDP低

UDP协议是基于无连接的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高。

区别如下:

1、TCP是需要基于链接的、UDP是不需要链接的

2、对系统资源的要求(TCP较多,UDP少)

3、TCP需要三次握手架构较复杂、UDP程序架构较简单

4、TCP是流模式与UDP是数据报模式 ;

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

-----------------------------------------------------------------------------

图中有几个字段需要重点介绍下:

(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

(A)URG:紧急指针(urgent pointer)有效。

(B)ACK:确认序号有效。

(C)PSH:接收方应该尽快将这个报文交给应用层。

(D)RST:重置连接。

(E)SYN:发起一个新连接。

(F)FIN:释放一个连接。

三次握手:(建立连接)

1、【Client→Server】 SYN=1 sn=J                                  Client进入SYN_SENT状态

2、【Client←Server】 SYN=1 ACK=1 an=J+1 sn=T    Server进入SYN_RCVD状态

3、【Client→Server】 ACK=1 sn=J+1 an=T+1             lient和Server进入ESTABLISHED状态

四次挥手:(断开链接)

1、【Client→Server】 FIN=J                           Client进入FIN_WAIT_1状态

2、【Client←Server】 ACK=1 ack=J+1         Server进入CLOSE_WAIT状态

3、【Client←Server】 FIN=K                         Server进入LAST_ACK状态

4、【Client→Server】 ACK=1 ack=K+1        Client进入TIME_WAIT状态、Server进入CLOSED状态

TCP报文首部

--------------------------------------------------------------------------------------------------------------------------

IP协议(1、将IP地址写入数据包的IP首部;2、路由)

IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址。

IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

--------------------------------------------------------------------------------------------------------------------------

ARP协议

A的地址为:   IP:10.1       MAC: AA-AA

B的地址为:   IP:10.2       MAC: BB-BB

A-10.1要向10.2发送数据时,A会在网内发送广播,谁是10.2,此时有设备对应的IP地址为10.2时,将在网内回应,我是10.2 我的MAC为BB-BB。然后设备AA-AA将向设备BB-BB发送数据。

ARP欺骗(设定B为欺骗者):解决方法为IP与MAC绑定

A的地址为:IP:10.1    MAC: AA-AA

B的地址为:IP:10.2    MAC: BB-BB

C的地址为:IP:10.3    MAC: CC-CC

此时:

1、B告诉A 我是10.3   我的MAC是BB-BB(此信息被更新到A的ARP缓存中)

同时B告诉C 我是10.1 我的MAC是BB-BB(此信息被更新到C的ARP缓存中)

2、A与C通信是。如A向C传输数据包时、目标IP被查询到的设备MAC为BB-BB,即数据包会经过B,再经其转向给C。(C向A传输数据奕如此)

--------------------------------------------------------------------------------------------------------------------------

OSI与TCP/IP模型关联对比

--------------------------------------------------------------------------------------------------------------------------

以太网CSMA/CD机制,让电脑工作在半双工模式下的。即发送数据前需要监听网络,当网络繁忙时,多方一起竞争,会有很大的延迟。

----------------------------------------------------------------------------------------------------------------------------

实例模拟过程:

场景:客户端访问某网站的一个页面

动作:客户端去访问 http://mabeyx.com:8080/wordpress/index.php

假设条件: 1、客户端:IP=X 网站(服务器)IP:192.168.12.235

2、网站(服务器)名称:mabeyx.com

3、服务端的架构为LNMP

4、此次访问是正常、顺利的。

过程:

1、客户端根据自己设定的DNS服务器去正向解析mabeyx.com,返回的非权威应答为192.168.12.235;

假如客户端无设定DNS服务器且缓存中无mabeyx.com的信息,将从根DNS服务器开始查询。(.com服务器返回的解析结果才是权威应答,其他DNS服务器返回的解析结果都为非权威应答)

2、X→192.168.12.235传输数据,根据IP协议,X会在多条路径中选择一条到达192.168.12.235。形成一张从X→192.168.12.235的路由表。

3、在2过程中会结果无数的设备,根据ARP协议,使用通信的IP地址反查对应的MAC地址,并将数据帧传输给下一MAC。并以此将数据传输至目标服务器上。

4、访问端口为8080,根据TCP协议,进行三次握手。

1、【Client→Server】 SYN=1 sn=J                                 Client进入SYN_SENT状态

2、【Client←Server】 SYN=1 ACK=1 an=J+1 sn=T   Server进入SYN_RCVD状态

3、【Client→Server】 ACK=1 sn=J+1 an=T+1            Client和Server进入ESTABLISHED状态

4.1、完成三次握手,并建立连接;

4.2、接受客户端的HTTP请求报文;

4.3、处理请求,将请求中的index.php内容通过CGI协议,交由PHP解析器进行处理。

4.4、访问资源,假如此时需要访问数据

数据库在本地:PHP使用Socket的方式向MySQL获取数据

数据库非本地:PHP使用TCP协议向MySQL获取数据

4.5、构建响应,将客户端请求的结果生产HTTP报文;

4.6、发送响应,向客户端发送生成的响应报文;

4.7、记录日志--将已经完成的HTTP事务记录日志文件。

5、响应的HTTP报文通过客户端使用的浏览器解析成非纯文本的形式展现出来,并保持至缓存中;

6、客户端发起断开链接请求,根据TCP协议,进行四次挥手。

1、【Client→Server】 FIN=J                           Client进入FIN_WAIT_1状态

2、【Client←Server】 ACK=1 ack=J+1         Server进入CLOSE_WAIT状态

3、【Client←Server】 FIN=K                         Server进入LAST_ACK状态

4、【Client→Server】 ACK=1 ack=K+1        Client进入TIME_WAIT状态、Server进入CLOSED状态

tcp ip协议 服务器和客户端区别,网络与TCP/IP协议-总结相关推荐

  1. Linux下编写UDP/TCP版本的服务器和客户端的流程

    Linux下编写UDP/TCP版本的服务器和客户端的流程 文章目录 Linux下编写UDP/TCP版本的服务器和客户端的流程 一:UDP和TCP的区别 二.UDP编写服务器的步骤 三.UDP编写客户端 ...

  2. daytime协议的服务器和客户端程序,用socket套接字实现daytime协议服务器和客户端程序.doc...

    文档介绍: 用socket套接字实现daytime协议服务器和客户端程序.doc一.设计目的为了提高同学的自主动手能力,把理论知识运用于实践中,从实践中更好的领悟所学的知识.二.题目要求及需求分析1. ...

  3. c++简单实现http协议服务器和客户端

    C++ 简单实现HTTP GET/POST 请求 HTTP(超文本传输协议)是一种客户端与服务端的传输协议,最早用于浏览器和服务器之间的通信,后来因为其使用灵活.方便等特点,广泛用于客户端与服务端的通 ...

  4. 基于 TCP Socket 的服务器与客户端的简单连接

    简单的讲下流程: 1. 服务器会创建一个监听 socket, 用来监听客户端的连接请求,接着配置一下监听 socket 的 IP.port.protocol 2. 绑定配置好的信息 以及监听 sock ...

  5. TCP,UDP创建服务器以及客户端

    TCP服务器: #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include ...

  6. 为Oracle 服务器和客户端配置网络数据加密和完整性

    Oracle 高级安全加密 安全密码系统的目的是基于密钥将明文数据转换为无法理解的密文,这样在不知道正确密钥的情况下很难(在计算上不可行)将密文转换回其相应的明文.在对称密码系统中,相同的密钥用于加密 ...

  7. http协议服务器ppt,传智播客内部资料HTTP协议.ppt

    <传智播客内部资料HTTP协议.ppt>由会员分享,可在线阅读,更多相关<传智播客内部资料HTTP协议.ppt(12页珍藏版)>请在人人文库网上搜索. 1.北京传智播客教育 , ...

  8. 推送消息mqtt协议服务器域名云喇,推送消息mqtt协议服务器域名云喇

    推送消息mqtt协议服务器域名云喇 内容精选 换一换 上传证书相关问题,请根据您的情况选择具体解决方法:目前SSL证书管理平台只支持上传PEM格式的证书.其他格式的证书需要转化成PEM格式后才能上传, ...

  9. 门禁系统服务器和客户端区别,从门禁系统功能决定选购

    从门禁系统功能决定选购 来源:华强电子网 作者:华仔 浏览:79 时间:2017-04-29 02:17 标签: 摘要: 现在的安防系统中,对门禁系统功能的要求也越来越高,这就要求工程商对门禁系统必须 ...

最新文章

  1. Mysql中大表添加索引的办法
  2. Tomcat 6.0 日志处理
  3. Android:Margin和Padding
  4. jQuery 3.3.1已经发布,开发团队正在准备4.0版本
  5. C++中extern关键字的作用
  6. LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)
  7. 使用GDAL对DEM渲染处理流程
  8. php获取数据3中方式,PHP面向对象之3种数据访问方式详解(代码实例)
  9. IDEA打开README.md文件时卡死
  10. 惠普局域网共享打印机设置_打印机共享怎么设置 惠普打印机共享设置步骤介绍【详解】...
  11. 打卡第十八天--用户体验设计师总结
  12. WPS(Word)中图注、域的使用基础
  13. 台式计算机如何连接手机热点上网,家里台式没有网络 想用手机热点来连接电脑上网 怎么处理?...
  14. PyTorch学习(二):Transform
  15. html meta标签 小图标,meta标签详解及添加ico图标
  16. 用NDK-r25交叉编译zlib-1.2.12
  17. 高效能力人士必知必会的搜索引擎高级使用技巧
  18. 用JavaScript canvas做的走迷宫游戏,肝了一下午,请帮忙点个赞!
  19. 224、三维形体投影面积
  20. 支付宝支付(五):周期扣款-支付后签约场景

热门文章

  1. persepolis download manager中文版(pdm下载器)
  2. ArangoDB——操作案例二
  3. 新学编程之掌握基本概念
  4. linux 开放连续端口,CentOS/Linux 开放80、8080端口或者开放某个端口
  5. 服务器网页能进去app进不去怎么办啊,ao3网页版进入 ao3进不去怎么办
  6. 学计算机的,为什么要用linux?
  7. JwtToken介绍与使用 超详细保姆级教程 内附详细示例代码
  8. 线性代数之向量、矩阵、行列式、列向量的计算
  9. 小米盒子,一个说皇帝没穿衣服的小孩
  10. php命令提示无效,window_Win7系统命令提示符输入指令无效问题的解决办法,Win7系统命令提示符输入指令无 - phpStudy...