计算机网络基础4.3

一、传输层协议

1、TCP、IP传输层

在TCP/IP协议传输层中有两个并列的协议:UDP和TCP

UDP(User Datagram Protocol,用户数据报协议)是面向无连接的,即在进行数据传输之前不需要建立连接,而目的主机收到数据报后也不需要发回确认。这种协议提供了一种高效的传输服务。

TCP(Transmission Control Protocol,传输控制协议)是面向连接的,即在进行数据传输之前需要先建立连接,而且目的主机收到数据报后要发回确认信息。这种协议提供了一种可靠的传输服务。


从通信和信息处理的角度看:传输层向它的上一层应用提供通信服务,它属于面向通信部分的最高层,也是用户功能的最低层

2、端口

TCP/IP传输层可以通过协议端口(protocol port,简称端口)来标识通信的应用进程。
      例如: HTTP  80

 DHCP 67、68

1)网络互连层的IP协议将数据传送到传输层后,传输协议要将数据传递给正确的应用进程,为了识别是哪一个进程,就需要使用端口号。
2)在网络通信中有一种软件端口,它并不是物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
3)每个应用程序,不管是服务器还是客户端,都有一个唯一的端口号,或者作为源端口号,或者作为目的端端口号。
4)一个端口是一个16位号码,范围为1~65536

5)端口将应用进程与IP网络相关联,是应用进程的地址标识

公认端口(WeII Known Ports)
公认端口是众所周知的端口号,主要为了在网络连接时避免冲突,人们也就规定了一些固定端口给常用的网络软件,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。

我们在IE的地址栏里输入一个网址的时候,比如www.163.com是不必指定端口号的,因为在默认情况下www服务的端口号是“80”。

常见公认服务端口号:


动态端口(Dynamic Ports)

动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。

3、套接字Socket

源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。

由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。
套接字包括IP地址(32位)和端口号(16位),共48位。

例如(124.33.13.55,200)和(126.45.21.51,25)就是一对套接字,在整个Internet中,在传输层上进行通信的一对套接字都必须是唯一的。  


每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP 连接(端到端)的端点不是主机,不是主机的IP 地址,不是应用进程,也不是传输层的协议端口。而是一对套接字(socket) 。

UDP协议,虽然在进行通信的进程间不需要建立连接,但是在每次传输数据时,都要给出发送端口和接收端口,因此同样也要使用套接字。 

Socket应用的基本步骤:
(1)服务器端socket绑定(bind)于特定端口,侦听(listen)连接请求
(2)客户端向服务器和特定端口提交连接请求(connect)
(3)服务器接受连接,产生一个新的socket,绑定到另一端口,由此socket来处理和客户端的交互;服务器继续侦听原socket来接受其他客户端的连接请求
(4)连接成功后客户端也产生一socket,并通过它来与服务器端通讯(注意:客户端socket并不与特定端口绑定)

(5)服务器端和客户端通过读取(recv)和写入(send)各自的socket来进行通讯

Socket常用函数:
套接字创建函数——socket()
创建本地地址结构——bind()
监听连接——listen()
请求建立套接字连接——connect()
接收建立套接字连接请求——accept()
流套接字数据传输——send()/recv()
数据报套接字数据传输——sendto()/recvfrom()
输入/输出多路复用——select()

关闭套接字——closesocket()

TCP流程-服务器端套接字编程:


TCP流程-客户器端套接字编程:


TCP流程-套接字编程:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值