计算机网络——传输层协议1

传输层: UDP协议,TCP协议
传输层: 传输层是负责端与端(端点,进一步理解就是端口)之间的传输,不论是传输层当中的udp协议还是tcp协议,都是负责端口和端口之间的数据传输。“传输层只负责端口,不负责ip(ip是网络层在负责)”
端口的划分:
端口的范围(0~2^16)
知名端口:0~1023
http:80, https:443, ssh:22, ftp:21 telnet:23
并不是说非知名端口就可以随意去使用了,常用软件在使用的端口
mysql: 3306 oracle: 1521
网络数据在传输过程当中的五元组行信息:任何一个需要在网络当中传输的数据,都会具备五元组信息,否则网络就不会转发
在这里插入图片描述

UDP协议

1.udp协议的三大特点 :无连接,不可靠,面向数据包
无连接:是指再给发送方发消息的时候,不需要建立连接,只要知道对方的ip地址以及侦听端口就可以直接发送了
不可靠:对于udp消息的发送方,是不关心消息接收方是否工作正常,对于发送方而言,只关心发送函数调用是否成功(发送方调用sendto函数成功)
面向数据报:需要结合udp缓冲区来分析,分为发送和接收
应用层给传输层的udp协议提交数据的时候,应用层的数据会被临时写到udp协议的发送缓冲区当中,此时在缓冲区当中打上udp协议的报头之后,就递交给网络层
udp协议在接收到udp数据之后,是整条整条的给应用层进行传递
2.udp协议报头字段的含义

struct udphdr
{
	u_int16_t uh_sport; /*source port 源端口*/
	u_int16_t uh_dport; /*destination port 目的端口*/
	u_int16_t uh_ulen; /*udp length udp数据长度*/
	u_int16_t uh_sum; /*udp checksum 校验和*/
};

数据长度:类型是uint6_t ,范围是65535,udp数据报长度最大是65535字节
udp数据长度 = udp头部(8字节) + 应用层递交数据的长度

在应用层自定制协议,将数据在应用层分割成为满足udp传输的小块,在使用udp协议进行传输,又带来一个新的问题,udp协议是面向数据报,也就是意味着udp是整条数据收发的。
在这里插入图片描述
1.在应用层的视角当中,需要传输的数据被分成了不同的小块,本质上这些小块组合在一起,就是我们需要传输的内容。
2.但是在传输层udp协议的视角当中,应用层提交的小块数据,就是一个完整的udp数据报

设计应用层协议(自定制协议字段)字段:
1.属于同一个应用层数据,不同的数据块具有相同的id
2.在报头当中加上偏移量,偏移量是描述分块数据在整个应用层数据包当中的位置
3.分块数据的长度

校验和:
1.本质上,是接收方用来校验udp数据在传输过程当中是否失真
结果:
1.1 udp数据失真:发送方发送的udp数据和接收方接收到的udp数据不一致
处理:接收方的传输层,就不会将失真的数据提交给应用层,直接丢弃了
1.2 udp数据没有失真,正常的,直接提交给应用层
校验和的计算方式:
如何计算(发送方):
1.将udp数据(udp协议头 + 有效数据),分成多个16个比特位的小段,除了校验和的16个比特位之外,其余的比特位进行相加的操作
2.求出的结果进行反码的运算
3.将反码运算的结果放到16个比特位的校验和当中
如何校验(接收方):
1.将所有的16个比特位的小段全部加起来,如果是1111 1111 1111 1111,则标识数据是正常的。
在这里插入图片描述
UDP缓冲区:
1.UDP缓冲区是整条数据接收和发送的
2.对于UDP的发送而言,是有UDP的发闪送缓冲区的,只不过在发送区打上UDP协议的报头之后就直接提交给网络层了
3.对于UDP的接收而言,是有UDP的接收缓冲区的,只不过是整条UDP数据提交给应用层的,UDP是不保证UDP数据包时可靠并且有序到达对端的
UDP的应用:
DHCP协议:动态主机分配协议,直白点:就是谁上网给谁分配ip,不上网就不分配ip;
本质上:还是由于ipv4版本的ip地址枯竭的问题,不够用;
可以不使用ip作为一台机器的唯一标识吗?MAC地址是可以的(本质上是由于MAC地址是全球唯一的)
DNS协议:域名解析协议
作用及时将域名转化成为ip地址,而使用的协议就是udp协议

TCP协议

面向连接,可靠传输,面向字节流
面向连接:
1.TCP连接的本质,是在建立连接的三次握手时期,通信双方协商很多连接当中的参数。例如:MSS,包序号等
2.对于TCP而言,如果不建立连接则不能够进行通信
3.对于TCP而言,建立连接的过程是在内核完成的,程序员只需要调用accept函数,获取已经完成三次握手的连接

从连接建立和连接终止的角度,我们需要讨论三次握手以及四次挥手
不论是三次握手还是四次挥手,我们在分析连接的时候,都需要从三个方面进行分析:
1.双发连接状态
2.连接数据包名称
3.包序管理
三次握手
在这里插入图片描述
抓网络包
Linux:
1.切换到root用户,使用tcpdump
tcpdump -i any port[端口] -s 0 -w 123.dat
2.抓下来的结果,使用wireshark打开,分析结果
win:
1.wireshark直接进行抓包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值