
socket套接字介绍 互联网通信协议 tcp协议
物理层:负责发送电信号(1,0来表示高低电频) 数据链路层:etherent协议规定,一组电信号构成一个数据帧,叫做”帧“ 每一个数据帧分成:报头head和数据data两部分 head包含:发送者(源地址),接收者(目标地址),数据类型 data:数据包的具体内容 mac地址:etherent规定接入internet的设备都必须具备网卡, 发送端和接收端的地址便是指网卡的地址,即mac地址,mac地址 只能在局域网里面使用 网络层:ip地址加上子网掩码可以找到计算机在哪一个局域网里面,称为数据包 传输层:tcp/udp协议,端口 应用层:http,ftp,mail协议
发布日期:2021-05-08 03:56:53
浏览次数:21
分类:精选文章
本文共 1908 字,大约阅读时间需要 6 分钟。
套接字
学习套接字编程的目的是为了开发一个c/s或者b/s架构的软件client------网络-------server
cs架构需要写两个软件,客户端,服务端都需要开发去写 优点:开发可以按照自己的想法写软件 缺点:服务端,客户端都需要开发去编写,开发工作量增大 browser------网络------server bs架构的客户端是浏览器,开发只需要写服务端的软件 优点:开发的工作量减少,只需要写服务端软件 缺点:写软件需要按照浏览器的标准去写互联网=物理连接介质+通信协议
互联通信协议就相当于一种互联网通信的标准什么是套接字
套接字把传输层,网络层,数据链路层,物理层进行了封装,写成了一个软件。 开发只需要写应用层代码,应用层的数据需要基于网络向外面发送,可以直接下载socket软件,调用套接字的功能。
osi七层协议
应用层-表示层-会话层-传输层-网络层-数据链路层-物理层
发送数据
- 假设客户端需要向服务端发送一条数据,应用层发出数据(可封装也可不封装), 传送给传输层,传输层在源数据上封装了源端口,目标端口;传给网络层,网络层 会封装源ip,目标ip;传给数据链路层,数据链路层会封装源mac地址,网关mac地址, 网关会把数据的源ip地址改成网关向外发送请求的ip地址,然后进行封装打包, 传给物理层,物理层会把数据转成二进制发送给中转设备,中转设备会发送给服务端。
接收数据
- 服务端接收到数据后,物理层会先把二进制转换成数据帧,依次拆开,数据链路层会通过arp协议, 把ip地址转换成mac地址,传给局域网内对应计算机的网络层。 网络层确认ip地址,传输层确认端口号,应用层接收客户端数据。
arp协议:ip地址解析成mac地址
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址- ip+mac+port=》标识了全世界独一无二的计算机软件端口
传输层的两种协议
tcp协议(传数据慢) tcp协议是可靠传输:程序产生数据先在在内存里面,数据在发送端发送给客户端后,不会立刻删除数据,会等客户返回确认信息后, 再删除数据。如果发送端没有收到客户端返回的ack确认信息,过一段时间会再发送一次。syn=1(标志位)代表请求建立连接,
建立连接需要三次交互,假设客户端先向服务端发送连接请求,服务端返回接收到请求后会同时向客户端发送连接请求, 客户端接收到服务端的请求后,向服务端发送确认连接请求。 建立连接的时候客户端会向服务端发送序列号(seq=一串数字) 客户端返回(ack=1+一串数字),以此来判断服务端与客户端的连接是否是自己要寻找的对方fin代表请求断开连接,
断开连接需要四次交互,假设客户端需要向服务端发送的数据已经传输完成了,会向服务端发送断开连接的请求, 服务端收到请求后,会向客户端返回确认断开请求。等到服务端的数据也传输完成了,同样也会向客户端发送断 开连接的请求,客户端接收到服务端的请求后,向服务端发送确认断开请求。ack=1代表确认连接/断开连接,在传输过程中代表确认序列号是否正确
洪水攻击
backloa(半连接池):客户端向服务端发送的请求会先放在半连接池里面,如果处理 请求的速度赶不上访问请求的速度,那么会导致半连接池被占满空间,俗称洪水攻击 半连接池占用的是内存空间,半连接池一旦满了,其他用户访问的时候直接就失败了。udp协议(传数据快)
udp协议是不可靠数据:传数据不需要建立连接。 服务端发完数据包后,不会等待客户端的回应,直接删除内存的数据,释放内存。发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月05日 13时10分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MSSQL 2005 数据库变成可疑状态
2021-05-09
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2021-05-09
秋色园引发CPU百分百命案的事件分析与总结
2021-05-09
安装jdk并配置环境变量
2021-05-09
稀疏数组
2021-05-09
js的严格模式
2021-05-09
idea的安装和无限期试用
2021-05-09
Oracle VM VirtualBox安装PVE虚拟机
2021-05-09
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2021-05-09
Android MediaPlayer setDataSource failed
2021-05-09
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09
数据仓库建模方法论
2021-05-09
虚拟机搭建hadoop环境
2021-05-09
DataStax Bulk Loader教程(四)
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09
Rust 内置 trait :PartialEq 和 Eq
2021-05-09
Hibernate(十四)抓取策略
2021-05-09