网络编程 协议

网络应用程序设计模式

1.C/S-client/server
优点:协议选用灵活/缺点:不安全,可以修改用户电脑
2.B/S-browser/server
优点:跨平台/缺点:只能使用http

网络模型图:

7层OSI模型

物:光纤
数:数据的传输和错误检测
网:路由选择
传:udp/tcp
会:接触或建立关系
表:格式转换加密解密
应:ftp/http
这里写图片描述

链路层:以太网

以太网帧格式:借助mac地址完成数据包传递
mac地址就是网卡的编号,网卡编号是唯一的(由厂家设定)

由于网络中不知道对方的mac地址,需要通过ip获取,这时候要用到arp协议,发送arp数据包
A给B发送ARP协议,带上自己的IP和MAC地址,以及B的IP地址
B接收到ARP协议后,发送自己的IP和MAC地址,以及A的IP和MAC地址

网络层:IP协议

IP协议和IP地址不同
4位版本号:ipv4/ipv6
8位生存时间(TTL):最多能经过多少跳(经过几个路由器,最多256个)
32位源IP地址:发送
32位目的IP地址:接收

DNS域名解析服务器,通过域名拿到IP地址

传输层(TCP/UDP)

UDP协议

使用场景:实时性要求比较高
1.视频聊天
2.通话
3.有实力的公司比如微信,qq,先使用udp,在应用层定义协议,做数据校验

UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
如果想避免丢失的情况,需要在应用层进行封装
16位源端口:
16位目的端口:

进程
1.进程id
2.网络环境中:
1)IP-定位一台主机
2)Port-定位一个进程,16位,最多65535个端口

TCP协议

使用场景:对数据安全要求高
1.网页登录数据
2.文件传输

面向连接的
1.连接时,三次握手
2.发送数据时:进行数据确认(丢失,会重传&管道传输)

标志位:
SYN:请求建立链接
ACK:应答
FIN:断开链接

第一次握手
客户端:携带标志位SYN,随机32位序号
服务端:检测SYN是否为1

第二次握手
服务器:

  1. 携带标志位ACK,客户端随机32位序号+1
  2. SYN+32随机序号
    客户端:
    检测标志位

第三次握手:
客户端:ACK-确认序号(随机序号+1)
服务端:检测ACK-校验确认序号

在这里插入图片描述

第一次挥手:
客户端:1.FIN+序号 2.ACk+序号
服务端:1.检测FIN 2.ACK之前发的数据发送多少

第二次挥手:
服务器:1.ACK+确认序号
客户端:检测ACK

第三次挥手:
服务端:1.FIN+序号 2.ACK+序号
客户端:检测ACK

第四次挥手:
客户端:
服务端:

在这里插入图片描述

三次握手四次挥手

IP地址

ip地址

IP地址包括:网络号和主机号
A类:网络号7位,主机号24位
B类:网络号14位,主机号16位
C类:网络号21位,主机号8位
C类IP地址,一个网段最多可以容纳256-2台电脑,192.168.1.0代表网络号
192.168.1.255代表广播地址
这里写图片描述

区分各类地址的最简单的方法是看它的第一个十进制整数。
这里写图片描述

集线器收到的数据包都会以广播的形式发送,交换机有学习功能,可以记住mac地址
路由器:连接不同的网络,有两个网卡,不同的网卡连接不同的网络,网卡在各自不同的网络中具有该网络的ip既网关。路由之间通过mac地址来确定消息的发送方向
给路由器设置寻路规则
arp:根据IP找电脑的MAC地址
rarp:根据MAC地址找ip
DNS:协议

实际地址:也叫MAC地址,6组16进制表示
前三节是厂商地址,后面3节是网卡的序列号
标记实际转发数据时的设备地址
IP地址子:
标记逻辑上的地址
子网掩码:
和ip地址一起来确定网络号
默认网关:
发送的ip不在同一个网段内,那么会把这个数据转发给默认网关
DNS服务器:
解析域名,使用DNS协议

端口

用来标记一个进程(不能用pid来标记,因为pid在多个系统上可能不同),每个软件启动的时候都会开启一个端口,不同的系统中端口是一个。

端口号0~65535(2的16次方)
知名端口(Well Konwn Ports): 0~1023
80端口分配给HTTP服务
21端口分配给FTP服务
动态端口(Dynamic Ports): 1024~65535
不知名的进程可以申请端口,比如SQL

 netstat -an # 统计当前的端口信息

在/etc/services中可以查看各个端口提供的服务

参考文献:
TCP-IP详解卷1:协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值