在TCP/IP协议栈,传输层有两个协议TCP和UDP。
在客户端打开一个网页的时候,(1)服务器要将这个网页分成段,封装成多个数据包进行传输。(2)TCP协议要求客户端和服务器之间保持一个会话,用于统计发送了多少个数据包了,还有多少个没发,中途若有丢失的数据包客户端还要要求服务器重新传输,以保证可靠传输。知道数据传输完成,会话才会结束。(3)若服务器给客户端发送的数据过快,客户端来不及处理,客户端会告知服务器暂停一下,等客户端处理完成之后,服务器再继续发。
(1)上网的时候一般都需要进行域名解析。当在计算机A中输入一个网址的时候,A就要向DNS服务器发一个请求,询问该网址的地址是多少(一个数据包就说明白这件事情),这个时候传输层就用UDP协议;DNS服务器收到数据包后告诉A该域名的ip地址是...,(一个数据包就可以回答A的问题),这也是用UDP协议;之后A通过收到的IP地址访问WEB站点。UDP是不可靠传输,当网络堵塞,数据包发生丢失,即A问了之后,DNS服务器没有回应,那么过1s后,A会再问一遍。A不需要和DNS服务器建立会话
(2)QQ聊天的时候,发送的聊天信息也是一个数据包可以传完,也是不可靠传输,用的是UDP协议。一来一回聊了很多内容,发送了很多数据包,但是这些数据包之间是没有联系的,所以也不需要编号。有时候会出现一个红色!号表示发送失败,这时我们人为地就会再发一遍
(3)两个人传一份500M的电影,这一个数据包是传不完的,这里用的是TCP协议。
(4)发邮件用的是TCP协议(可能邮件很长还有附件)
(5)利用ftp下载文件使用的是TCP协议,ftp上的文件有大有小
(6)有时候使用多个数据包的通信也是UDP通信:eg:广播屏幕也是属于UDP协议。一个机房里的计算机都连着一个交换机,其中有一台老师的计算机上安装了一个广播软件,这个老师的计算机就在这个局域网中发广播,并不和其他的计算机建立会话,也不使用可靠的通信,若有一台学生电脑相应慢没有收到老师当前的屏幕,老师也不会去管,老师的计算机只管当前电脑屏幕是什么样子就在网上播什么。这样数据包广播或者多播的这里通信也用UDP协议。因为不建立会话,也不保证数据传输的可靠性。
C:\Users\Ruanc>netstat -n
活动连接
协议 本地地址 外部地址 状态
TCP 127.0.0.1:49664 127.0.0.1:59699 ESTABLISHED
TCP 127.0.0.1:54530 127.0.0.1:64231 ESTABLISHED
TCP 127.0.0.1:59699 127.0.0.1:49664 ESTABLISHED
TCP 127.0.0.1:64231 127.0.0.1:54530 ESTABLISHED
TCP 127.0.0.1:64232 127.0.0.1:64233 ESTABLISHED
TCP 127.0.0.1:64233 127.0.0.1:64232 ESTABLISHED
TCP 192.168.43.231:63577 112.34.111.149:80 ESTABLISHED
TCP 192.168.43.231:63593 40.119.211.203:443 ESTABLISHED
TCP 192.168.43.231:63597 183.192.192.163:8080 ESTABLISHED
如下图,黄底的是应用层协议,这里只是列出部分。TCP/UDP+端口:可以表示一个应用层协议,如此说来应用层协议非常多
例如:
常见的传输层协议和应用层协议之间的关系
服务:计算机安装服务之后,利用TCP/UDP的端口侦听客户端的请求。
我们可以在计算机中安装很多服务。比如:
安装web服务,那么计算机就是一个web站点了。
安装邮件服务,那么就可以让客户端收发邮件了
当计算机1安装了web服务,只有这个服务一启动,他就使用TCP协议的80端口来侦听客户端的请求。若安装FTP服务,那么该服务一启动,那就用TCP协议的21端口来侦听客户端的请求。安装SMTP发邮件服务,就使用TCP的25端口来侦听客户端的请求。
举例:
当计算机2要访问WEB站点,就要在网上发一个数据包,数据包在传输层包含信息:目标端口80(明确),源端口1234(随便);到网络层之后加上ip地址:目标ip101,源ip102。到达路由器后,路由器根据ip地址将数据包转发到计算机1的网卡,网卡发现数据包里用的是TCP协议且端口号是80,此时web站点已经启动,且80端口在侦听,那么就用web服务器负责接待,知道对方是来访问网页的,那么就将网页传回去。
为了安全起见,还可以在计算机1的网卡上设置,什么样的数据包可以进来。若这个网卡只允许目标端口是80的数据可以进来,这样只允许访问网站的数据包可以进来,访问FTP的,SMTP等都进不来,就算在侦听也没有用。网络安全由此产生。
计算机上如果安装的服务比较多,若服务1有漏洞,通过服务1的漏洞可能会入侵操作系统,之后将其他服务损坏。如何让自己的服务器更安全呢?
安装服务之后,启动,计算机就开始侦听对应的端口
C:\Users\Ruanc>netstat -an
活动连接
协议 本地地址 外部地址 状态
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6646 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49668 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49669 0.0.0.0:0 LISTENING
TCP 0.0.0.0:49671 0.0.0.0:0 LISTENING
TCP 127.0.0.1:7475 0.0.0.0:0 LISTENING
TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING
TCP 127.0.0.1:49184 127.0.0.1:49664 ESTABLISHED
TCP 127.0.0.1:49664 127.0.0.1:49184 ESTABLISHED
TCP 127.0.0.1:51308 127.0.0.1:54530 ESTABLISHED
TCP 127.0.0.1:51309 127.0.0.1:51310 ESTABLISHED
TCP 192.168.43.231:51500 204.79.197.222:443 ESTABLISHED
表面一个ip地址为204.79.197.222的计算机访问我的51500端口,数据包的源端口是443
电信的DNS服务器222.222.222.222;谷歌公司的DNS服务器8.8.8.8
C:\Users\Ruanc>netstat -n
活动连接
协议 本地地址 外部地址 状态
TCP 127.0.0.1:49184 127.0.0.1:49664 ESTABLISHED
TCP 127.0.0.1:49664 127.0.0.1:49184 ESTABLISHED
TCP 127.0.0.1:51308 127.0.0.1:54530 ESTABLISHED
TCP 127.0.0.1:51309 127.0.0.1:51310 ESTABLISHED
TCP 127.0.0.1:51310 127.0.0.1:51309 ESTABLISHED
TCP 127.0.0.1:54530 127.0.0.1:51308 ESTABLISHED
TCP 192.168.43.231:49201 112.34.111.149:80 ESTABLISHED
TCP 192.168.43.231:50682 40.119.211.203:443 ESTABLISHED
TCP 192.168.43.231:50701 183.192.192.163:8080 ESTABLISHED
TCP 192.168.43.231:50719 221.228.75.64:9203 ESTABLISHED
TCP 192.168.43.231:50900 13.224.161.13:443 ESTABLISHED
TCP 192.168.43.231:50944 112.34.111.108:443 CLOSE_WAIT
TCP 192.168.43.231:51373 116.62.230.66:443 ESTABLISHED
TCP 192.168.43.231:51385 112.34.111.108:443 CLOSE_WAIT
TCP 192.168.43.231:51457 120.92.219.40:7823 ESTABLISHED
可以迷惑黑客,若本台计算机上运行远程桌面服务,那么黑客扫描到我在侦听3389端口,就知道我是远程桌面服务;若将端口改成4000,黑客就不知道这是什么服务。更改端口可以让我们的服务器更安全。
在网卡上只开发必要的端口
原文:https://www.cnblogs.com/deer-cen/p/12321250.html