端口号、UDP与TCP

概念

1.端口号指定了某个程序,即一个端口号bind一个进程,而一个进程可bind多个端口号
2.ip:一个ip确定网络上的一台主机,127.0.0.1表示本机ip;ip有ipv4和ipv6,ipv6为国家现普及的。

3.端口号划分:
端口号占两个字节,16位;11023为Http,FTP,SSH等知名应用层协议,如HTTP为80端口,HTTPS为443端口,102365535为操作系统能动态划分的端口号;

五元组

通过五元组信息确定网络上的一条通道;
TCP\ip协议 + 源ip + 源端口号 + 目的ip + 目的端口号

UDP协议

1.UDP协议端格式:十六位源端口号,十六位目的端口号,十六位UDP长度,十六位检验和后面可能再加数据;
2.UDP长度:表示数据报的最大长度(UDP首部和UDP数据);
3.检验和:如果检验和错误,则丢弃数据;
4.缺点:(1)没有重传机制:如果网络故障,对方没有收到数据,应用层也不会收到错误反馈;(2)无连接:只需要知道对面的端口号和IP就可以向对象发送数据,无需建立连接;(3)面向数据报:不能灵活地控制读写数据的次数和数量;即应用层交给UPD多长的报文,UDP就会发送多长数据;而接收端也必须一次接受这么长的字节;(4)UDP的sockt既能读也能写,也叫全双工;如果读时不能写,写时不能读为半双工,原因是全双工用两条数据线,半双工一条;(5)UDP没有发送缓冲区,而是直接将数据交给内核,由内核交给协议层发送给对方,有接受缓冲区,接收缓冲区不知道报文的先后顺序,而且一旦接收缓冲区满了,就会丢弃再收到的报文;
(6)UDP长度为16位其中包含UPD首部和数据,意味着UPD一次传输的最大数据为64k,如果发送的数据超过64k就需要应用层分包发送,接收端手动装包;

TCP协议

包含:
1.十六位源端口号,十六位目的端口号;确定从那个进程来,到那个进程去;
2.32位序列号/确认号:与三次握手和数据传输有序性等有关;
3.4位TCP头部长度:表示有多少个32bit位(也就是4字节),15*4为60字节,
4.六位标志位:
URG: 紧急指针是否有效:
ACK:确认号表示该发哪一段数据了
PSH:提示接收端TCP缓冲区理科读走数据RST:表示打错电话了,要求重新建立连接;
SYN:请求建立连接,只有在前两次握手才用到且值为1;
FIN:通知对方自己将要关闭,
5,16位窗口大小:
6,十六位效验和:由发送端填充,CRC效验,接收端效验TCP首部和TCP数据部分,效验不通过证明数据有问题;
7,十六位紧急指针:表示哪部分数据是紧急数据;
8,40字节头部选项

ACK

每一个ACK都带有对应的序列号,告诉对方哪些数据收到了,哪些没收到;

超时重传机制

1.如果主机A发送给B一段数据在一定时间内还没有收到B的确认应答就会进行重传;
2.2MSL:表示一份数据在网络上的最大存活时间,MSL表示一份数据从一端传输到另一端的最大时间;
3.原因可能是ACK走丢,因此主机B可能会受到很多重复数据,所以B要对这些数据进行去重,这时序列号和确认号就发挥了作用,
4.Linux、Windows等,超时是以500ms的指数形式增长的,第一次等待500ms,第二次2500ms,第三次4500ms,累计一定次数后TCP就会认为网络或者对方端异常,强制关闭连接;

连接管理机制

三次握手与四次挥手(链接)

发布了28 篇原创文章 · 获赞 3 · 访问量 730

猜你喜欢

转载自blog.csdn.net/XDtobaby/article/details/103906805