<address id="fjh72"></address>

<dfn id="fjh72"><button id="fjh72"></button></dfn>

        <dfn id="fjh72"></dfn>

        Previous Page TOC Next Page



        — 4 —
        TCP and UDP


        Yesterday's text examined the Internet Protocol (IP) in considerable detail. As you might remember, the Internet Protocol handles the lower-layer functionality. Today I look at the transport layer, where the Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) come into play.

        TCP is one of the most widely used transport layer protocols, expanding from its original implementation on the ARPANET to connecting commercial sites all over the world. On Day 1, "Open Systems, Standards, and Protocols," you looked at the OSI seven-layer model, which bears a striking resemblance to TCP/IP's layered model, so it is not surprising that many of the features of the OSI transport layer were based on TCP.

        In theory, a transport layer protocol could be a very simple software routine, but TCP cannot be called simple. Why use a transport layer that is as complex as TCP? The most important reason depends on IP's unreliability. As you saw yesterday, IP does not guarantee delivery of a datagram; it is a connectionless system with no reliability. IP simply handles the routing of datagrams, and if problems occur, IP discards the packet without a second thought (generating an ICMP error message back to the sender in the process). The task of ascertaining the status of the datagrams sent over a network and handling the resending of information if parts have been discarded falls to TCP, which can be thought of as riding shotgun over IP.

        Most users think of TCP and IP as a tightly knit pair, but TCP can be (and frequently is) used with other protocols without IP. For example, TCP or parts of it are used in the File Transfer Protocol (FTP) and the Simple Mail Transfer Protocol (SMTP), both of which do not use IP.

        What Is TCP?


        The Transmission Control Protocol provides a considerable number of services to the IP layer and the upper layers. Most importantly, it provides a connection-oriented protocol to the upper layers that enable an application to be sure that a datagram sent out over the network was received in its entirety. In this role, TCP acts as a message-validation protocol providing reliable communications. If a datagram is corrupted or lost, TCP usually handles the retransmission, rather than the applications in the higher layers.



        TCP is not a piece of software. It is a communications protocol. When you install a TCP stack on your machine, you are installing the TCP layer, and usually a lot more software to provide the rest of the TCP/IP services. TCP is used as a catch-all phrase for TCP/IP in many cases.

        TCP manages the flow of datagrams from the higher layers to the IP layer, as well as incoming datagrams from the IP layer up to the higher level protocols. TCP has to ensure that priorities and security are properly respected. TCP must be capable of handling the termination of an application above it that was expecting incoming datagrams, as well as failures in the lower layers. TCP also must maintain a state table of all data streams in and out of the TCP layer. The isolation of all these services in a separate layer enables applications to be designed without regard to flow control or message reliability. Without the TCP layer, each application would have to implement the services themselves, which is a waste of resources.

        TCP resides in the transport layer, positioned above IP but below the upper layers and their applications, as shown in Figure 4.1. TCP resides only on devices that actually process datagrams, ensuring that the datagram has gone from the source to the target machine. It does not reside on a device that simply routes datagrams, so there is usually no TCP layer in a gateway. This makes sense, because on a gateway the datagram has no need to go higher in the layered model than the IP layer.

        Figure 4.1. TCP provides end-to-end communications.

        Because TCP is a connection-oriented protocol responsible for ensuring the transfer of a datagram from the source to destination machine (end-to-end communications), TCP must receive communications messages from the destination machine to acknowledge receipt of the datagram. The term virtual circuit is usually used to refer to the communications between the two end machines, most of which are simple acknowledgment messages (either confirmation of receipt or a failure code) and datagram sequence numbers.

        Following a Message


        To illustrate the role of TCP, it is instructive to follow a sample message between two machines. The processes are simplified at this stage, to be expanded on later today. The message originates from an application in an upper layer and is passed to TCP from the next higher layer in the architecture through some protocol (often referred to as an upper-layer protocol, or ULP, to indicate that it resides above TCP). The message is passed as a stream—a sequence of individual characters sent asynchronously. This is in contrast to most protocols, which use fixed blocks of data. This can pose some conversion problems with applications that handle only formally constructed blocks of data or insist on fixed-size messages.

        TCP receives the stream of bytes and assembles them into TCP segments, or packets. In the process of assembling the segment, header information is attached at the front of the data. Each segment has a checksum calculated and embedded within the header, as well as a sequence number if there is more than one segment in the entire message. The length of the segment is usually determined by TCP or by a system value set by the system administrator. (The length of TCP segments has nothing to do with the IP datagram length, although there is sometimes a relationship between the two.)

        If two-way communications are required (such as with Telnet or FTP), a connection (virtual circuit) between the sending and receiving machines is established prior to passing the segment to IP for routing. This process starts with the sending TCP software issuing a request for a TCP connection with the receiving machine. In the message is a unique number (called a socket number) that identifies the sending machine's connection. The receiving TCP software assigns its own unique socket number and sends it back to the original machine. The two unique numbers then define the connection between the two machines until the virtual circuit is terminated. (I look at sockets in a little more detail in a moment.)

        After the virtual circuit is established, TCP sends the segment to the IP software, which then issues the message over the network as a datagram. IP can perform any of the changes to the segment that you saw in yesterday's material, such as fragmenting it and reassembling it at the destination machine. These steps are completely transparent to the TCP layers, however. After winding its way over the network, the receiving machine's IP passes the received segment up to the recipient machine's TCP layer, where it is processed and passed up to the applications above it using an upper-layer protocol.

        If the message was more than one TCP segment long (not IP datagrams), the receiving TCP software reassembles the message using the sequence numbers contained in each segment's header. If a segment is missing or corrupt (which can be determined from the checksum), TCP returns a message with the faulty sequence number in the body. The originating TCP software can then resend the bad segment.

        If only one segment is used for the entire message, after comparing the segment's checksum with a newly calculated value, the receiving TCP software can generate either a positive acknowledgment (ACK) or a request to resend the segment and route the request back to the sending layer.

        The receiving machine's TCP implementation can perform a simple flow control to prevent buffer overload. It does this by sending a buffer size called a window value to the sending machine, following which the sender can send only enough bytes to fill the window. After that, the sender must wait for another window value to be received. This provides a handshaking protocol between the two machines, although it slows down the transmission time and slightly increases network traffic.



        The use of a sliding window is more efficient than a single block send and acknowledgment scheme because of delays waiting for the acknowledgment. By implementing a sliding window, several blocks can be sent at once. A properly configured sliding window protocol provides a much higher throughput.

        As with most connection-based protocols, timers are an important aspect of TCP. The use of a timer ensures that an undue wait is not involved while waiting for an ACK or an error message. If the timers expire, an incomplete transmission is assumed. Usually an expiring timer before the sending of an acknowledgment message causes a retransmission of the datagram from the originating machine.

        Timers can cause some problems with TCP. The specifications for TCP provide for the acknowledgment of only the highest datagram number that has been received without error, but this cannot properly handle fragmentary reception. If a message is composed of several datagrams that arrive out of order, the specification states that TCP cannot acknowledge the reception of the message until all the datagrams have been received. So even if all but one datagram in the middle of the sequence have been successfully received, a timer might expire and cause all the datagrams to be resent. With large messages, this can cause an increase in network traffic.

        If the receiving TCP software receives duplicate datagrams (as can occur with a retransmission after a timeout or due to a duplicate transmission from IP), the receiving version of TCP discards any duplicate datagrams, without bothering with an error message. After all, the sending system cares only that the message was received—not how many copies were received.

        TCP does not have a negative acknowledgment (NAK) function; it relies on a timer to indicate lack of acknowledgment. If the timer has expired after sending the datagram without receiving an acknowledgment of receipt, the datagram is assumed to have been lost and is retransmitted. The sending TCP software keeps copies of all unacknowledged datagrams in a buffer until they have been properly acknowledged. When this happens, the retransmission timer is stopped, and the datagram is removed from the buffer.

        TCP supports a push function from the upper-layer protocols. A push is used when an application wants to send data immediately and confirm that a message passed to TCP has been successfully transmitted. To do this, a push flag is set in the ULP connection, instructing TCP to forward any buffered information from the application to the destination as soon as possible (as opposed to holding it in the buffer until it is ready to transmit it).

        Ports and Sockets


        All upper-layer applications that use TCP (or UDP) have a port number that identifies the application. In theory, port numbers can be assigned on individual machines, or however the administrator desires, but some conventions have been adopted to enable better communications between TCP implementations. This enables the port number to identify the type of service that one TCP system is requesting from another. Port numbers can be changed, although this can cause difficulties. Most systems maintain a file of port numbers and their corresponding service.

        Typically, port numbers above 255 are reserved for private use of the local machine, but numbers below 255 are used for frequently used processes. A list of frequently used port numbers is published by the Internet Assigned Numbers Authority and is available through an RFC or from many sites that offer Internet summary files for downloading. The commonly used port numbers on this list are shown in Table 4.1. The numbers 0 and 255 are reserved.

        Table 4.1. Frequently used TCP port numbers.

        Port Number

        Process Name

        Description

        1

        TCPMUX

        TCP Port Service Multiplexer

        5

        RJE

        Remote Job Entry

        7

        ECHO

        Echo

        9

        DISCARD

        Discard

        11

        USERS

        Active Users

        13

        DAYTIME

        Daytime

        17

        Quote

        Quotation of the Day

        19

        CHARGEN

        Character generator

        20

        FTP-DATA

        File Transfer Protocol•Data

        21

        FTP

        File Transfer Protocol•Control

        23

        TELNET

        Telnet

        25

        SMTP

        Simple Mail Transfer Protocol

        27

        NSW-FE

        NSW User System Front End

        29

        MSG-ICP

        MSG-ICP

        31

        MSG-AUTH

        MSG Authentication

        33

        DSP

        Display Support Protocol

        35


        Private Print Servers

        37

        TIME

        Time

        39

        RLP

        Resource Location Protocol

        41

        GRAPHICS

        Graphics

        42

        NAMESERV

        Host Name Server

        43

        NICNAME

        Who Is

        49

        LOGIN

        Login Host Protocol

        53

        DOMAIN

        Domain Name Server

        67

        BOOTPS

        Bootstrap Protocol Server

        68

        BOOTPC

        Bootstrap Protocol Client

        69

        TFTP

        Trivial File Transfer Protocol

        79

        FINGER

        Finger

        101

        HOSTNAME

        NIC Host Name Server

        102

        ISO-TSAP

        ISO TSAP

        103

        X400

        X.400

        104

        X400SND

        X.400 SND

        105

        CSNET-NS

        CSNET Mailbox Name Server

        109

        POP2

        Post Office Protocol v2

        110

        POP3

        Post Office Protocol v3

        111

        RPC

        Sun RPC Portmap

        137

        NETBIOS-NS

        NETBIOS Name Service

        138

        NETBIOS-DG

        NETBIOS Datagram Service

        139

        NETBIOS-SS

        NETBIOS Session Service

        146

        ISO-TP0

        ISO TP0

        147

        ISO-IP

        ISO IP

        150

        SQL-NET

        SQL NET

        153

        SGMP

        SGMP

        156

        SQLSRV

        SQL Service

        160

        SGMP-TRAPS

        SGMP TRAPS

        161

        SNMP

        SNMP

        162

        SNMPTRAP

        SNMPTRAP

        163

        CMIP-MANAGE

        CMIP/TCP Manager

        164

        CMIP-AGENT

        CMIP/TCP Agent

        165

        XNS-Courier

        Xerox

        179

        BGP

        Border Gateway Protocol


        Each communication circuit into and out of the TCP layer is uniquely identified by a combination of two numbers, which together are called a socket. The socket is composed of the IP address of the machine and the port number used by the TCP software. Both the sending and receiving machines have sockets. Because the IP address is unique across the internetwork, and the port numbers are unique to the individual machine, the socket numbers are also unique across the entire internetwork. This enables a process to talk to another process across the network, based entirely on the socket number.



        TCP uses the connection (not the protocol port) as a fundamental element. A completed connection has two end points. This enables a protocol port to be used for several connections at the same time (multiplexing).

        The last section examined the process of establishing a message. During the process, the sending TCP requests a connection with the receiving TCP, using the unique socket numbers. This process is shown in Figure 4.2. If the sending TCP wants to establish a Telnet session from its port number 350, the socket number would be composed of the source machine's IP address and the port number (350), and the message would have a destination port number of 23 (Telnet's port number). The receiving TCP has a source port of 23 (Telnet) and a destination port of 350 (the sending machine's port).

        Figure 4.2. Setting up a virtual circuit with socket numbers.

        The sending and receiving machines maintain a port table, which lists all active port numbers. The two machines involved have reversed entries for each session between the two. This is called binding and is shown in Figure 4.3. The source and destination numbers are simply reversed for each connection in the port table. Of course, the IP addresses, and hence the socket numbers, are different.

        Figure 4.3. Binding entries in port tables.

        If the sending machine is requesting more than one connection, the source port numbers are different, even though the destination port numbers might be the same. For example, if the sending machine were trying to establish three Telnet sessions simultaneously, the source machine port numbers might be 350, 351, and 352, and the destination port numbers would all be 23.

        It is possible for more than one machine to share the same destination socket—a process called multiplexing. In Figure 4.4, three machines are establishing Telnet sessions with a destination. They all use destination port 23, which is port multiplexing. Because the datagrams emerging from the port have the full socket information (with unique IP addresses), there is no confusion as to which machine a datagram is destined for.

        Figure 4.4. Multiplexing one destination port.

        When multiple sockets are established, it is conceivable that more than one machine might send a connection request with the same source and destination ports. However, the IP addresses for the two machines are different, so the sockets are still uniquely identified despite identical source and destination port numbers.

        TCP Communications with the Upper Layers


        TCP must communicate with applications in the upper layer and a network system in the layer below. Several messages are defined for the upper-layer protocol to TCP communications, but there is no defined method for TCP to talk to lower layers (usually, but not necessarily, IP). TCP expects the layer beneath it to define the communication method. It is usually assumed that TCP and the transport layer communicate asynchronously.

        The TCP to upper-layer protocol (ULP) communication method is well-defined, consisting of a set of service request primitives. The primitives involved in ULP to TCP communications are shown in Table 4.2.

        Table 4.2. ULP-TCP service primitives.

        Command

        Parameters Expected

        ULP to TCP Service Request Primitives

        ABORT

        Local connection name

        ACTIVE-OPEN

        Local port, remote socket


        Optional: ULP timeout, timeout action, precedence, security, options

        ACTIVE-OPEN-WITH-DATA

        Source port, destination socket, data, data length, push flag, urgent flag


        Optional: ULP timeout, timeout action, precedence, security

        ALLOCATE

        Local connection name, data length

        CLOSE

        Local connection name

        FULL-PASSIVE-OPEN

        Local port, destination socket


        Optional: ULP timeout, timeout action, precedence, security, options

        RECEIVE

        Local connection name, buffer address, byte count, push flag, urgent flag

        SEND

        Local connection name, buffer address, data length, push flag, urgent flag


        Optional: ULP timeout, timeout action

        STATUS

        Local connection name

        UNSPECIFIED-PASSIVE-OPEN

        Local port


        Optional: ULP timeout, timeout action, precedence, security, options

        TCP to ULP Service Request Primitives

        CLOSING

        Local connection name

        DELIVER

        Local connection name, buffer address, data length, urgent flag

        ERROR

        Local connection name, error description

        OPEN-FAILURE

        Local connection name

        OPEN-ID

        Local connection name, remote socket, destination address

        OPEN-SUCCESS

        Local connection name

        STATUS RESPONSE

        Local connection name, source port, source address, remote socket, connection state, receive window, send window, amount waiting ACK, amount waiting receipt, urgent mode, precedence, security, timeout, timeout action

        TERMINATE

        Local connection name, description



        Passive and Active Ports


        TCP enables two methods to establish a connection: active and passive. An active connection establishment happens when TCP issues a request for the connection, based on an instruction from an upper-level protocol that provides the socket number. A passive approach takes place when the upper-level protocol instructs TCP to wait for the arrival of connection requests from a remote system (usually from an active open instruction). When TCP receives the request, it assigns a port number. This enables a connection to proceed rapidly, without waiting for the active process.

        There are two passive open primitives. A specified passive open creates a connection when the precedence level and security level are acceptable. An unspecified passive open opens the port to any request. The latter is used by servers that are waiting for clients of an unknown type to connect to them.

        TCP has strict rules about the use of passive and active connection processes. Usually a passive open is performed on one machine, while an active open is performed on the other, with specific information about the socket number, precedence (priority), and security levels.

        Although most TCP connections are established by an active request to a passive port, it is possible to open a connection without a passive port waiting. In this case, the TCP that sends a request for a connection includes both the local socket number and the remote socket number. If the receiving TCP is configured to enable the request (based on the precedence and security settings, as well as application-based criteria), the connection can be opened. This process is looked at again in the section titled "TCP and Connections."

        TCP Timers


        TCP uses several timers to ensure that excessive delays are not encountered during communications. Several of these timers are elegant, handling problems that are not immediately obvious at first analysis. The timers used by TCP are examined in the following sections, which reveal their roles in ensuring that data is properly sent from one connection to another.

        The Retransmission Timer


        The retransmission timer manages retransmission timeouts (RTOs), which occur when a preset interval between the sending of a datagram and the returning acknowledgment is exceeded. The value of the timeout tends to vary, depending on the network type, to compensate for speed differences. If the timer expires, the datagram is retransmitted with an adjusted RTO, which is usually increased exponentially to a maximum preset limit. If the maximum limit is exceeded, connection failure is assumed, and error messages are passed back to the upper-layer application.

        Values for the timeout are determined by measuring the average time that data takes to be transmitted to another machine and the acknowledgment received back, which is called the round-trip time, or RTT. From experiments, these RTTs are averaged by a formula that develops an expected value, called the smoothed round-trip time, or SRTT. This value is then increased to account for unforeseen delays.

        The Quiet Timer


        After a TCP connection is closed, it is possible for datagrams that are still making their way through the network to attempt to access the closed port. The quiet timer is intended to prevent the just-closed port from reopening again quickly and receiving these last datagrams.

        The quiet timer is usually set to twice the maximum segment lifetime (the same value as the Time to Live field in an IP header), ensuring that all segments still heading for the port have been discarded. Typically, this can result in a port being unavailable for up to 30 seconds, prompting error messages when other applications attempt to access the port during this interval.

        The Persistence Timer


        The persistence timer handles a fairly rare occurrence. It is conceivable that a receive window might have a value of 0, causing the sending machine to pause transmission. The message to restart sending might be lost, causing an infinite delay. The persistence timer waits a preset time and then sends a one-byte segment at predetermined intervals to ensure that the receiving machine is still clogged.

        The receiving machine resends the zero window-size message after receiving one of these status segments, if it is still backlogged. If the window is open, a message giving the new value is returned, and communications are resumed.

        The Keep-Alive Timer and the Idle Timer


        Both the keep-alive timer and the idle timer were added to the TCP specifications after their original definition. The keep-alive timer sends an empty packet at regular intervals to ensure that the connection to the other machine is still active. If no response has been received after sending the message by the time the idle timer has expired, the connection is assumed to be broken.

        The keep-alive timer value is usually set by an application, with values ranging from 5 to 45 seconds. The idle timer is usually set to 360 seconds.



        TCP uses adaptive timer algorithms to accommodate delays. The timers adjust themselves to the delays experienced over a connection, altering the timer values to reflect inherent problems.


        Transmission Control Blocks and Flow Control


        TCP has to keep track of a lot of information about each connection. It does this through a Transmission Control Block (TCB), which contains information about the local and remote socket numbers, the send and receive buffers, security and priority values, and the current segment in the queue. The TCB also manages send and receive sequence numbers.

        The TCB uses several variables to keep track of the send and receive status and to control the flow of information. These variables are shown in Table 4.3.

        Table 4.3. TCP send and receive variables.

        Variable Name

        Description

        Send Variables

        SND.UNA

        Send Unacknowledged

        SND.NXT

        Send Next

        SND.WND

        Send Window

        SND.UP

        Sequence number of last urgent set

        SND.WL1

        Sequence number for last window update

        SND.WL2

        Acknowledgment number for last window update

        SND.PUSH

        Sequence number of last pushed set

        ISS

        Initial send sequence number

        Receive Variables

        RCV.NXT

        Sequence number of next received set

        RCV.WND

        Number of sets that can be received

        RCV.UP

        Sequence number of last urgent data

        RCV.IRS

        Initial receive sequence number


        Using these variables, TCP controls the flow of information between two sockets. A sample connection session helps illustrate the use of the variables. It begins with Machine A wanting to send five blocks of data to Machine B. If the window limit is seven blocks, a maximum of seven blocks can be sent without acknowledgment. The SND.UNA variable on Machine A indicates how many blocks have been sent but are unacknowledged (5), and the SND.NXT variable has the value of the next block in the sequence (6). The value of the SND.WND variable is 2 (seven blocks possible, minus five sent), so only two more blocks could be sent without overloading the window. Machine B returns a message with the number of blocks received, and the window limit is adjusted accordingly.

        The passage of messages back and forth can become quite complex as the sending machine forwards blocks unacknowledged up to the window limit, waiting for acknowledgment of earlier blocks that have been removed from the incoming cue, and then sending more blocks to fill the window again. The tracking of the blocks becomes a matter of bookkeeping, but with large window limits and traffic across internetworks that sometimes cause blocks to go astray, the process is, in many ways, remarkable.

        TCP Protocol Data Units


        As mentioned earlier, TCP must communicate with IP in the layer below (using an IP-defined method) and applications in the upper layer (using the TCP-ULP primitives). TCP also must communicate with other TCP implementations across networks. To do this, it uses Protocol Data Units (PDUs), which are called segments in TCP parlance.

        The layout of the TCP PDU (commonly called the header) is shown in Figure 4.5.

        Figure 4.5. The TCP Protocol Data Unit.

        The different fields are as follows:

        Following the PDU or header is the data. The Options field has one useful function: to specify the maximum buffer size a receiving TCP implementation can accommodate. Because TCP uses variable-length data areas, it is possible for a sending machine to create a segment that is longer than the receiving software can handle.

        The Checksum field calculates the checksum based on the entire segment size, including a 96-bit pseudoheader that is prefixed to the TCP header during the calculation. The pseudoheader contains the source address, destination address, protocol identifier, and segment length. These are the parameters that are passed to IP when a send instruction is passed, and also the ones read by IP when delivery is attempted.

        TCP and Connections


        TCP has many rules imposed on how it communicates. These rules and the processes that TCP follows to establish a connection, transfer data, and terminate a connection are usually presented in state diagrams. (Because TCP is a state-driven protocol, its actions depend on the state of a flag or similar construct.) Avoiding overly complex state diagrams is difficult, so flow diagrams can be used as a useful method for understanding TCP.

        Establishing a Connection


        A connection can be established between two machines only if a connection between the two sockets does not exist, both machines agree to the connection, and both machines have adequate TCP resources to service the connection. If any of these conditions are not met, the connection cannot be made. The acceptance of connections can be triggered by an application or a system administration routine.

        When a connection is established, it is given certain properties that are valid until the connection is closed. Typically, these are a precedence value and a security value. These settings are agreed upon by the two applications when the connection is in the process of being established.

        In most cases, a connection is expected by two applications, so they issue either active or passive open requests. Figure 4.6 shows a flow diagram for a TCP open. The process begins with Machine A's TCP receiving a request for a connection from its ULP, to which it sends an active open primitive to Machine B. (Refer back to Table 4.2 for the TCP primitives.) The segment that is constructed has the SYN flag set on (set to 1) and has a sequence number assigned. The diagram shows this with the notation "SYN SEQ 50," indicating that the SYN flag is on and the sequence number (Initial Send Sequence number or ISS) is 50. (Any number could have been chosen.)

        Figure 4.6. Establishing a connection.

        The application on Machine B has issued a passive open instruction to its TCP. When the SYN SEQ 50 segment is received, Machine B's TCP sends an acknowledgment back to Machine A with the sequence number of 51. Machine B also sets an ISS number of its own. The diagram shows this message as "ACK 51; SYN 200," indicating that the message is an acknowledgment with sequence number 51, it has the SYN flag set, and it has an ISS of 200.

        Upon receipt, Machine A sends back its own acknowledgment message with the sequence number set to 201. This is "ACK 201" in the diagram. Then, having opened and acknowledged the connection, Machine A and Machine B both send connection open messages through the ULP to the requesting applications.

        It is not necessary for the remote machine to have a passive open instruction, as mentioned earlier. In this case, the sending machine provides both the sending and receiving socket numbers, as well as precedence, security, and timeout values. It is common for two applications to request an active open at the same time. This is resolved quite easily, although it does involve a little more network traffic.

        Data Transfer


        Transferring information is straightforward, as shown in Figure 4.7. For each block of data received by Machine A's TCP from the ULP, TCP encapsulates it and sends it to Machine B with an increasing sequence number. After Machine B receives the message, it acknowledges it with a segment acknowledgment that increments the next sequence number (and hence indicates that it has received everything up to that sequence number). Figure 4.7 shows the transfer of two segments of information—one each way.

        Figure 4.7. Data transfers.

        The TCP data transport service actually embodies six subservices:


        Closing Connections


        To close a connection, one of the TCPs receives a close primitive from the ULP and issues a message with the FIN flag set on. This is shown in Figure 4.8. In the figure, Machine A's TCP sends the request to close the connection to Machine B with the next sequence number. Machine B then sends back an acknowledgment of the request and its next sequence number. Following this, Machine B sends the close message through its ULP to the application and waits for the application to acknowledge the closure. This step is not strictly necessary; TCP can close the connection without the application's approval, but a well-behaved system would inform the application of the change in state.

        Figure 4.8. Closing a connection.

        After receiving approval to close the connection from the application (or after the request has timed out), Machine B's TCP sends a segment back to Machine A with the FIN flag set. Finally, Machine A acknowledges the closure, and the connection is terminated.

        An abrupt termination of a connection can occur when one side shuts down the socket. This can be done without any notice to the other machine and without regard to any information in transit between the two. Aside from sudden shutdowns caused by malfunctions or power outages, abrupt termination can be initiated by a user, an application, or a system monitoring routine that judges the connection worthy of termination. The other end of the connection might not realize that an abrupt termination has occurred until it attempts to send a message and the timer expires.

        To keep track of all the connections, TCP uses a connection table. Each existing connection has an entry in the table that shows information about the end-to-end connection. The layout of the TCP connection table is shown in Figure 4.9.

        Figure 4.9. The TCP connection table.

        The meaning of each column is as follows:


        User Datagram Protocol (UDP)


        TCP is a connection-based protocol. There are times when a connectionless protocol is required, so UDP is used. UDP is used with both the Trivial File Transfer Protocol (TFTP) and the Remote Call Procedure (RCP). Connectionless communications don't provide reliability, meaning there is no indication to the sending device that a message has been received correctly. Connectionless protocols also do not offer error-recovery capabilities—which must be either ignored or provided in the higher or lower layers. UDP is much simpler than TCP. It interfaces with IP (or other protocols) without the bother of flow control or error-recovery mechanisms, acting simply as a sender and receiver of datagrams.



        UDP is connectionless; TCP is based on connections.

        The UDP message header is much simpler than TCP's. It is shown in Figure 4.10. Padding can be added to the datagram to ensure that the message is a multiple of 16 bits.

        Figure 4.10. The UDP header.

        The fields are as follows:

        The UDP checksum field is optional, but if it isn't used, no checksum is applied to the data segment because IP's checksum applies only to the IP header. If the checksum is not used, the field should be set to 0.

        Summary


        Today, I looked at TCP in reasonable detail. Combined with the information in the last three days, you now have the theory and background necessary to better understand TCP/IP utilities, such as Telnet and FTP, as well as other protocols that use or closely resemble TCP/IP, such as SMTP and TFTP.

        The details of TCP/IP are revisited later in this book, but you can now proceed to actually using TCP/IP and its toolset.

        Q&A


        Define multiplexing and how it would be used to combine three source machines to one destination machine. Relate to port numbers.

        Multiplexing was explained in some detail on Day 1. It refers to combining several connections into one. Three machines could each establish source ports to one machine using only one receiving port. The port numbers for the sending machines would all be different, but all three would use the same destination port number. This was shown in Figure 4.4.

        What one word best describes the difference between TCP and UDP?

        Connections. TCP is connection-based, whereas UDP is connectionless.

        What are port numbers and sockets?

        A port number is used to identify the type of service provided. A socket is the address of the port on which a connection is established. There is no inherent physical relationship between the two, although many machines assign certain sockets for particular services (port numbers).

        Describe the timers used with TCP.

        The retransmission timer is used to control the resending of a datagram. The quiet timer is used to delay the reassignment of a port. The persistence timer is used to test a receive window. Keep-alive timers send empty data to keep a connection alive. The idle timer is the amount of time to wait for a disconnection to be terminated after no datagrams are received.

        What are the six data transport subservices offered by TCP?

        The subservices are full duplex, timeliness, ordered, labeled, controlled flow, and error correction.

        Workshop


        The Workshop provides quiz questions to help you solidify your understanding of the material covered. Some Workshop sections of this book also contain exercises to provide you with experience in using what you have learned. Try to understand the quiz and exercise answers before continuing on to the next chapter. Answers are provided in Appendix F, "Answers to Quizzes."

        Quiz


        1. Draw a diagram showing the binding of port tables when three machines are sending information to each other.

        2. Draw the TCP protocol data unit (PDU) and explain the meaning of each field.

        3. Use a diagram to show the signals involved with two machines establishing a TCP connection. Then, show how data is transferred. Finally, show the termination process.

        4. What is a TCP connection table? How is it used?

        5. Draw the UDP header and explain the fields it contains.

        6. What are the advantages of using UDP over TCP? When would you not want to use UDP?

        Previous Page Page Top TOC Next Page

        <address id="fjh72"></address>

        <dfn id="fjh72"><button id="fjh72"></button></dfn>

              <dfn id="fjh72"></dfn>
              a片一级富二代表兄妹淫乱新春 | 国产精品扒开腿做爽爽爽A片唱戏 | 亲子乱一区二区 | 国产无码在线诱惑视频 | 女人被男人操黄色午夜网止 | 影音先锋成人在线麻豆 | 亚洲丁香五月天成人 | 爱色99 | 操操操一级片 | 日韩欧美亚洲一区二区三区 | 人妻女大香蕉大香蕉 | 无码精品人妻一区二区三蜜桃 | 91成人区人妻精品一区二区 | 国产欧美黄色一级二级三级 | 久久久久久亚洲精品 | 亚洲最大视频网站 | www.艹逼| 影音先锋在线看片av一区 | 三级片视频在线播放 | 中文字幕www | 91麻豆产精品久久久久久 | 大香蕉伊人精品 | 亚洲无码av中文字幕 | 在线播放视频一区 | 欧美国产日本性爱 | 观看黄色视频网站 | 乱轮小说网站日韩 | 国产免费aaa高清 | 婷婷五月激情综合 | 成人AV高清无码在线观 | 最大香蕉在线视频精品店 | 69亚洲精品 | 欧美日韩在线视频播放 | 亚洲午夜成人天堂精品 | 水多多成人网站A片在线观看 | 先锋成人电影 | 国产卡一卡二卡三卡四在线观看 | 看女人18毛片 | 国产黄片手机在线观看 | www.豆花视频 | 日本成人三级在线 | 国内精品综合 | 四虎成人免费视频一二三四区视频 | 国内自拍叭叭叭 | 91成人一区二区三区 | 美国黑人一级大黄 | 亚洲色导航五月 | 国产色视频在线看 | 大香蕉伊人综合 | 国产高清视频无码 | 一区二区三区永久免费 | 日本少妇成人 | 性爱视频免费无码 | 国产女人操逼视屏免费播 | 亚洲内射视频 | 二本道一区二区三区免费视频 | 先锋亚洲资源 | 欧美一级a一级a爱片免费 | 玖玖在线免费观看视频 | 久久精品国产亚洲7777 | 黄网站在线视频不卡 | 激情无套内射无码视频 | 哪里可以看日本黄色电影 | 91麻豆影院 | 高清乱伦av | 无码三级成人 | 操逼免费无码 | 国内毛片毛片毛片毛片毛片毛片 | 葵司视频在线观看 | 久久成人免费91影片 | 中国乱伦视频 | 无码视频网站 | 精品无码久久久久久久久爆乳 | 欧美色图亚洲色图在线视频 | 香蕉视频日本免费色老板 | h色 国产 | 精品欧美性爱 | 婷婷精品视频 | 99在线亚洲 | www.日本特黄24小时免费 | 日韩动态图 | 黄色操逼小视频国产无码 | 加勒比精品 | 青娱乐精品视频日美 | 99热精品欧美亚洲 | 免费毛片+一区二区三区 | 免费毛片十八 | 影音先锋成人资源AV在线观看 | 操逼毛片网站 | 婷婷综合激情 | 欧美淫色视频免费观看 | 免费看一级黄色录像 | 人人操人人射 | 久久久久久国产精品高清 | 韩日操逼一级 | 青青98伊人 | 最新亚洲国产黄色视频在线观看 | www.男女视频 | 亚洲一级性爱 | 国产精品成人久久久久 | 精品免费囯产一区二区三区 | 果冻传媒性爱操逼电影三级片 | 黄色免费在线观看视频网站 | 久久中文娱乐网 | 成人性别视频影音先锋电影 | 韩国香蕉成人网 | 国产麻豆成人 | 亚洲 a v 网站 | 欧美性猛交XXXXX水多 | 午夜男女啪啪网站 | 成人国产精品蜜臀 | 肏逼的视频 | 久久黄色视频免费观看 | 色婷婷国产综合 | 婷婷国产精品久久久 | 欧美精品第一页 | 欧美成人黄色 | 超碰97人妻 | 大香蕉久久视频 | 亚洲日韩欧美丝袜制服在线播放 | 国产精品免费人成人网站酒店 | 女人荫蒂被添高潮视频 | 欧美性爱在线 | 日日日操 | 日韩在线黄色操B视频 | 91国产福利 | 亚洲777777 | 麻豆A片 毛片三区 | 国产精品嫩苞又嫩又紧又爽AV | 国产精品久久久久久久久久久久久久久久久 | 婷婷五月天婷婷五月天婷婷五月天色 | 亚洲第一色情网站 | 久久久蜜桃一区二区人 | 婷婷在线成人视频精品 | 精品无码久久久久久久久爆乳 | 精品无码一区二区三区四区 | 91成人精品视频 | 久久精品三级视频 | 婷婷五月丁香狠狠撸 | 免费在线AⅤ视频 | 大香蕉日 | 操操逼网站 | 国产中文网 | 婷婷深爱五月 | 青青草人妻 | 一级免费Aa片 | 综合五月激情网 | 精品人妻一区二区三区视频在线 | 人妻水蜜桃 | 亚洲色图欧美日韩 | 日本免费黄色电影网站 | 一本无码在线播放 | 天天色,天天干,天天 | huangpian久久久 | 国产欧美在线看 | 韩国精品福利 | 福利视频久久久久 | 永久免费黄色 | se色综合网 | 久久夜色精品国产网站 | 一级a一级a免费观看视频Al明星 | 欧美在线中文字幕 | 扮嫩小泬BBBB精品 | 影音先锋成人黄色电影 | 亚洲免费在线视频观看 | 人人摸人人爽人人射 | 日韩码无| 成人日批视频 | 成人免费视频 国产免费麻豆网站 | 国产日韩在线一级 | 成年女人免费视频 | 在线日韩一区二区 | 俺去也俺来也在线www官网 | 青青草AⅤ| 超碰中文字幕在线 | 日韩黄色在线视频 | 亚洲AV无码成人精品区欧洲 | 日韩国产黄色视频 | 天堂国产一区二区三区不卡 | 午夜成人免费视频 | 第一狼人综合网 | 福利在线色 | 日本五十路熟 | 国产双飞视频 | 在线伊人网 | 四虎成人精品永久免费AV九九 | 俺也去大香蕉 | 国产欧美在线视频 | 亚洲婷婷精品国产 | 伊人婷婷五月丁香 | 97免费在线视频 | 香蕉视频一级片 | 思思热精品在线视频 | 色婷婷粉嫩精品综合在线 | av日韩无码 | 黄色一级电影网 | 久久娱乐精品 | 国产中文成人 | 精品一区入口 | 北条麻妃性爱 | 中文字幕亚洲视频在线 | 水蜜桃成视频人app | 亚洲天堂无码在线观看 | 女人扒开尿口让男人桶 | 日本黄色一区 | 午夜乱伦福利 | 一本道一区二区三区四区 | 亚洲免费三区 | 青娱乐亚洲成人在线视频 | 无码一区在线观看 | 日韩又大又粗精品 | 呜呜视频网站在线观看 | 一级操逼图 | 欧美日韩一区二区三区四区论理片 | 99热官方网站 | 可以免费看的黄色视频 | 免费的成人网站在线观看 | 色呦呦在线播放 | 91福利在线视频 | 久久99久久99精品免费看小说 | 狠狠操成人免费黄色视频 | 日本内射网站 | 看90后操B | 欧美精品成人网站在线观看 | 婷婷五月天精品 | 日韩无码性爱黄色电影播放 | 暖暖高清视频日本中文www | 青草影视视频 | 国产亚洲aa级大片在线 | 国产精品久久久午夜夜伦鲁鲁 | 成人一区二区三区四区五区 | 超碰精品97 | 超碰做爱 | 天天日天天操天天日 | 日韩看片 | 北条麻妃九九九在线视频 | 白浆网站 | 操逼网视频在线 | 国产美女操逼黄站 | 国产打骚逼| 91一区二区 | caopen人人 | 黄片免费观看网站 | 国产又黄又硬又粗 | 天天看黄片 | 欧美激情亚洲无码 | 漏逼视频免费观看 | 人人做人人爱青青草视频 | 99热免费观看 | 少妇人妻一级A毛片 | 高清无码乱伦片 | 国产无码在线影院 | 欧美视频手机在线观看 | 国产一级av在线网站 | 亚洲AV无码久久精品色无码蜜桃 | 黄色一级视频免费观看 | 免费欧美一级视频 | 久热精品在线视频 | 国产操屄网 | 国产豆花无码 | 国产精品 男同 | 国产乱人妻精品入口 | 亚洲色图 欧美 | 影音先锋日夜av在线 | 天天射天天操天天透人妻 | 亚色大香蕉| 麻豆国产一区 | 亚洲,日韩,aⅴ在线欧美 | 青草娱乐视频在线观看 | 乱伦资源网 | 色欲AV自拍影视在线观看 | 97超碰免费观看 | 大鸡巴免费在线观看 | 男女拍拍网站 | 亲子乱婬A片日韩精品一区 | 婷婷五月天 亚洲 | 日韩欧美黄色电影一区 | 爱爱中文字幕 | 免费一级做a爰片性视频 | 懂色av蜜臀av粉嫩av | 一级黄色天堂 | 日韩三级国产 | 日本成人黄页 | 大香蕉亚洲日韩欧美 | 亚洲高清V | 亚洲视频手机在线 | 中文字幕成人视频 | 日本中文字幕手机在线 | 亚洲爱搞搞 | 日韩中文字幕免费在线观看 | www日逼com | 97天天操| 色婷婷丁香五月天在线观看 | 国产黄色电影在线观看 | 操屄电影 | 全国极品999无码视频免费观看 | 色色色五月 | 麻豆18禁在线看 | 中文字幕亚洲视频在线观看 | 黄色。****yor | 久久成人高清视频 | 专业操老外 | 五月天啪啪 | xxxx无码 | 色老板在线最新地址 | 狠狠撸奇米影视 | 在线免费黄| www.国产乱伦 | 欧美日韩国产三级 | 青娱乐手机在线视频 | 黄色国产在线免费看 | 国产性爱手机在线 | 色色色色色色色色色五月婷婷 | 亚洲第一网站视频香蕉视频 | 国产在线h | 一级黄色电影在线看 | 久久婷五月 | 五月天久久影院 | 国产精品久久久久久久久久乐趣播 | 天天日天天干天天日 | 久久99视频免费观看 | 国产精品乱码一区二区三区视频 | 免费观看AA片 | 亚洲AAA在线观看 | 免费一区三区 | 91视频成人 | 女人18毛片水真多免费 | 银行丝袜人妻第14部 | ww成人 | 操操操操操操操操操操网 | 国产在线欧美豆花 | 久久久噜噜噜久久中文字幕色伊伊 | 真人黄色视频 | 三级网站在线麻豆 | 一级A片电影网址 | 色综合久久88色综合天天看泰 | 麻豆传媒md在线观看视频 | 通野未帆一区二区三区 | 国产网红女主播操逼 | 中日韩一区二区三区久 | 日韩婬乱a一级毛片无码 | 黄色做爱免费 | 国产理论视频在线观看 | 五月花婷婷| 精品国产伦一区二区三区在线闺蜜 | 99国产高清 | 亚洲AA一 | 一级黄色片视频播放 | 夜夜夜夜操 | 大逼大逼一区二区三区 | 国产熟女操逼 | 成人激情在线 | 中日韩操逼视频 | 毛片毛片毛片毛片毛片 | 亚洲操逼视频网站 | 福利一区在线观看 | 成人啪啪视频在线 | 五月丁香俺也去国产 | 精品无码一区二区三区的天堂 | 国产免费观看高清完整版亚洲日本 | 自拍偷拍色图 | 欧美一级成人 | 亚洲免费观看高清视频 | 人妻.少妇.欧美.亚洲.日韩 | 河北最大AV网站 | 影音先锋AV无码 | 水密桃视频下载 | 人人草人人摸人人搞 | 免费一级毛片毛多水多 | 老骚逼网站 | 免费看日韩黄色电影 | 夜夜操综合网二区 | 好男人一区二区三区在线观看 | 日本无码一级A片毛 | 2024中文字幕在线 | 在线观看成年人视频 | 亚洲免费电影黄 | 亚洲AV无码成人精品区在线播放 | 日韩乱伦毛片 | 天堂精品一区二区三区 | 特黄毛片 | 亚洲综合在线视频 | 人人色人人| 亚洲男人的天堂视频网在线观看+720P | 日韩欧美天堂 | 91AV电影院 | 日韩无码操逼 | 黄色电影一级片电影网址 | 国产三级在线免费 | 天天干狠狠操 | 付妙菱 女大学生羞涩 | 九九九精彩视频 | 我要日B日B日B日B日B | 狠狠V欧美v日韩V亚洲v | 夜色视频网 | 国产高清黄色片 | 五十路熟女影视在线看 | 午夜视频免费 | 国产99九九久久无码精品 | 美女大屄在线 | 91干| 成人黄片免费网站 | 抠逼网站| 一区二区视频免费 | 国产精品V无码A片在线看吃奶 | 1313电影网 | 免费一级片免费 | Ts另类人妖一二三 | 天天干撸天天色 | 日韩三级片免费观看 | 三级点线视频 | 免费一级黄色 | 亚洲日本高清在线 | 日日干天天干天天舔 | 欧美三级少妇 | 四虎免费看黄 | 操吧在线观看 | 黄色视频网站免费在线观看 | 一区二区三区网 | 中文字幕日本欧美 | 国产逼爱 | 黄色成人在线网站 | 太黄三级在线观看破处 | 先锋影音亚洲AV每日资源网站 | 日本二区三区黄色 | 久久久久久av | 天天爽夜夜爽夜夜爽精品 | 欧美毛片蜜芽免费视频 | 久久性爱大片 | 猫咪AV大香蕉 | 日本欧洲三级 | 天天操天天拍天天干 | 天天干天天干天天干天天射 | 加勒比免费精品视频 | 色情一级AA片免费观看 | 4080私人蜜桃久久 | 粉嫩小泬BBBB免费看WWWW | 蜜桃视频 成人app ios | 亚洲无套| 欧美成人性爱视频 | 国产一级卖婬片AAAAA揪痧 | 亚洲AV激情无码专区在线播放 | 精品少妇在线刺激 | 青青草成人免费自拍视频 | 国产日产欧美一级A片 | 69成人网站 | 国产精品美女在线 | 北条麻妃 无码 在线 视频 | 亚洲欧美日本视频 | 欧美日韩中文字幕无码 | 三级电影久久久 | 色婷婷中文字幕 | 人妻AV在线观看 | 色色激情五月天 | 三级片网站在线 | 男女激情内射 | 黄色福利视频 | 台湾成人永久无码 | 国产白丝操逼 | 台湾 四级 无码 | 欧美 日本 国产 | 中文字幕日韩乱伦 | 成人污污污网站 | 9久精品 操综合网 | 高清无码做爱视频 | 三级性视频 | 性免费网站 | 体内射精一区二区三区在线视频 | 处破初破苞wwww视频 | 成人网站www污污污免费网站 | 麻豆影音先锋 | 日韩乱伦AV | 免费观看一级一片 | 天天操夜夜拍免费视频 | 成年人免费大香蕉 | 欧美v国产v亚洲v日韩九九 | 亚洲色激情综合网 | 超碰在线9 | 色狠狠一区二区三区香蕉 | 极品虎白美女被啪啪 | 久久日成人电影 | 大香蕉五月天 | 91在线无码精品秘 蜜桃 | 亚洲一卡二卡三卡四卡免 | 男人爱天堂资源网 | 淫色址| 91爱爱高清| 午夜偷拍视频 | 欧美在线观看视频一区 | 艹逼在线观看 | 一道本无码在线播放 | 日逼日逼日逼 | 中文字幕在线和永久在线的区别 | 国产和美国黄色毛片 | 香蕉久视频 | 欧美极品视频 | 蜜桃av秘 无码一区二区 | 国精产品乱码一区一区三区四区 | 成人做爱视频在线观看免费版网站 | 亚洲无码手机在线播放 | 91av免费观看 | 国产乱码一区二区三区四区在线 | 久久伊人精品 | 亚洲欧美性爱在线 | 黑人大鷄巴XXX69式 | 麻豆国产传媒一区二区-最新 | 高清无码男女 | 欧美一级婬片A片免费软件 | 日韩一级电影在线 | 天堂AV资源 | 三级成人网 | yw视频在线观看 | 国产精品视频在线免费观看 | 美女黄片网站 | 国产做受91 一片二片老头 | 大香蕉网址 | 超碰97资源 | 亚洲福利在线免费观看 | 色婷婷粉嫩精品综合在线 | 蜜桃视频色五月婷婷 | 中韩一区二区三区 | 伊人成人视频网 | 亚洲人一级电影 | 日韩一区二区三区四区五区六区 | 国产www| 大鸡巴操小穴视频 | 热热热热色 | 操逼传媒 | 免费看黄网站 7 7入口 | 免费AV黄色| 好逼国产 | 秋霞电影网一区二区三区 | 成人一卡二卡 | 美女裸体网站久久久 | 青青草无码黄色电影 | h网站在线 | 日日夜夜精品视频免费 | 一级黄色视频免费在线观看 | 精品久久一区二区三区四区五区 | xxx在线视频 | 色婷婷亚洲精品天天综 | 国产黄色片免费 | 后入视频网站 | 欧美A级视频在线观看 | 中文字幕人妻乱码 | 五月丁香六月婷婷免费视频 | 伊人成人小说 | 欧美色色爱爱男人天堂 | 久久夜色精品国产嚕嚕亚洲AV | 另类TS人妖一区二区三区牧瑶 | 久久人妻无码 | 黄色视频网站在线 | 欧美日韩一区视频 | 中文字幕免费AV | 天干夜天干夜天天免费视频 | 日韩欧美一级片在线 | 免费看一级黄色电影 | 中文字幕免费观看视频 | 操逼精品TV | 我要操在线视频 | 呦小泬哟小泬哟小泬免费看 | 日本亚洲免费在线视频 | 一区二区三区电影网 | 黑人日逼视频 | 欧美成人性爱图片 | 120分钟婬片免费看 | 欧美人妻日韩视频 | 成人俺去拉| 麻豆乱婬一区二区三区 | 国产精品久久久久久久成人午夜 | 国产黄片A | 亚洲精品国产精品国自产网站 | 国产婷婷色综合AV | 亚洲一级特黄 | 北条麻妃A片在线播放 | 欧美高清视频99 | 韩国精品无码一区二区三区18 | 色色五月婷| 91大鸡巴操 | 99操逼网站 | 精品亚洲中文字幕 | 免费看的黄色免费 | 自拍偷拍婷婷 | 狠狠干中文字幕 | 黄色电影网站免费 | 亚洲视频中文字幕在线播放 | 男女成人视频 | 亲子伦一区二区三区观看方式 | 国产在线观看啊 | 日韩人妻精品无码 | 美女啪啪av| 精品国产午夜福利 | 天天干夜夜操www | 天天综合天天做天天综合 | 久久青青草香蕉手机视频在线 | 免费美女网站 | 丁香色婷婷五月激情综合深爱 | 日韩乱伦AV无码小说 | 欧美少妇一区二区 | 熟妇视频在线 | 国产黑料在线 | 色婷婷五月天网站 | 欧美激情一区二区 | 亚洲一级电影在线观看 | 青娱乐亚洲精品视频线 | 大香蕉亚洲在 | 欧美精品一级二级A片 | 我想看操逼网站 | 精品人妻伦一二三区蜜桃 | www.久久综合 | 亚洲综合伊人 | 乱伦激情视频91 | 91乱子伦国产乱子伦无码 | 婷婷丁香激情综合 | 国产亚洲无码在线观看 | 国产精品免费一区二区三区 | 日韩免费成人电影 | 黑人操逼逼 | 蜜臀av无码精品一区二区三区 | 美女超碰在线 | 欧美激情性爱网站 | 一区二区三区水蜜桃 | www.操逼.com | 亚洲一区豆花视频 | 人人人人人人操 | 很很日免费视频 | 女人十八毛片a级毛片 | 91久久精品人人槡人妻人 | 无码乱伦中文字幕 | 欧美成人精品网站 | 欧美一級黃色A片免費看 | 国产超级无码高清在线视频观看 | www.色护士 | 在线看一区 | 91成人免费电影 | 亚洲一区二区视频 | 日韩一区二区三区四区 | 成人视频无码 | 囯产精品久久久久 | 色哟哟之蜜桃视频 - 百度 | 国产成人 亚洲 欧洲在线 | 娱乐网一区二区三区 | 日韩AV中文字幕在线免费观看 | 国产极品久久7777777 | 青春草在线免费视频 | 国产成人无码区免费视频 | gg在线精品视频观看 | 午夜中文无码 | 免费看操逼 | 免费看A片秘 免费 | 亚洲中文无码在线观看 | 大鸡吧草逼 | 成人性爱视频在线 | 老妇人一区二区三区 | 亚洲色大成人网站www永久 | 色播日韩 | 国产精品久久久久久久久 | 91影院理论推荐手机在线观看 | 成人激情五月 | 亚洲成人在线网站 | 青青草原网站在线观看 | 国产美女操 | 天天日天天干成人影音 | 天天日天天爽天天操 | 久久精品苍井空免费一区二 | 美国十次亚洲综合嫩91av | 亚洲自拍偷拍15P | 普通话毛片乱子伦 | 国产亚洲网| 激情内射亚洲免费 | 自拍成人在线观看 | 日韩午夜一区 | 国产一级a爱做片免费 | 不卡不卡不卡不卡不卡国产精品视频 | 好吊视频一区二区三区四区五区六区七区八区 | 99精品视频免费观看, | 人人摸人人爱人人操 | 97人妻在线视频 | 苍井空一区二区三区 | 国产精品激情无码视频小说 | 另类国产ts一区二区三区 | 免费播放婬乱男女婬视频国产 | 天天天天天天天天天干 | 波多野结衣福利在线 | 成人777 | 国产色婷婷久久 | 天天日天天干天天射天天操 | 黄色A在线观看 | 欧美日韩黄 | 亲子乱高潮1000部视频A片 | 国产精品久久久久久久久久久久久 | 日日操夜夜操天天操 | 天天干,夜夜爽 | 少妇做爱视频 | 台湾激情中文网 | 人人操人色 | 中日韩免费视频 | 欧美变态性爱一区二区三区 | 熟女人妻AV | 九九免费观看视频 | 日本色电影在线观看 | 琪琪亚洲 | 日韩人妻中文视频在线 | www.tiantianlu | 毛片在线网站 | 天天射天天爽天天爱 | 91无码人妻一区二区 | 成年人免费看视频 | 国产精品欧美一区二区三区苍井空 | 国产无遮挡A片又黄又爽小直播 | www.日本一级在线 | 天天干天天日天天插 | 日韩黄色一级A片 | 婷婷五月天色 | 免费一级A片奶好大 | 丁香色播五月 | 婷婷久久婷婷 | 国产激情自拍视频 | 国内精品在线看 | 一本大道av| www.一区二区三区 | 国产视频一区在线 | 国产激情123区 | 欧美三级网页 | 五月天婷婷六月丁香91 | 伊人大香蕉在线观看 | 欧美日韩中文字幕无码 | a线视频免费观看:中文字幕 | 免费一级毛片 | 久久婷婷五月天人人综合 | 澳门精品一区二区三区 | 成人操骚逼逼 | 欧美一性一乱一交一视频 | 黄色毛片在线免费观看 | 亚洲色大成人网站www永久 | 三区在线观看视频 | 91av成人 | 黄色动漫操逼 | 国产青草视频在线观看 | 爽灬爽灬无码无遮挡在线看 | 国产白丝袜足交网站大全 | 美女逼流水网站 | 香蕉大久久 | 中文字幕日韩成人电影 | 男女免费亚洲 | 麻豆九色 | 色导航在线| 免费日逼的视频 | 成人片777 | 三级片网站在线观看视频 | 亚洲精品久久久日产欧美蜜桃 | 操鼻素材大全在线观看 | 天堂网在线亚洲 | 学生妹内射视频 | 一级A片在线免费观看 | www.丁香五月 | 夜夜拍日日夜夜拍 | 在线操逼喷水 | 中文字幕精品无码网站人口 | 免费黄色视频网站亚洲 | 亚洲精品国产精品国自产曰本 | 激情射av| 国产精品国产三级国产 | 亚洲黄色在线看 | 国产精品二区高清在线苍井空 | 日本A级片网址 | 99这里有精品视频 | 91精品人妻少妇无码毛片91麻豆 | 双飞人妻13p | xxxx无码 | 大香蕉这里只有精品视频 | 男人天堂v在线 | 爱爱三级毛片 | 黄色视频在线看网站 | 成人干片网 | 精品69 | 韩国TS『人妖av | 日韩一级黄色视频 | 精品无码免费一区二区 | 色婷婷精品无码 | AV黄色在线网站 | 天天干,天天射免费视频 | 人人操网| 一级网站,黄色片 | 91麻豆精品秘密秘 入口-百度 | 一级视频在线观看免费 | 丁香五月亚洲国产 | 日日摸日日搞 | 免费黄色一级 | 国产女人操B | Cao在线综合 | 综合草逼网| 自拍偷拍成人视频 | 91麻豆一区二区三区 | 人人爱人人摸人人擂 | 免费的黄色网 | 亚洲视频一区 | 超碰中文在线字幕 | 无套中出丰满人妻无码99 | 久久午夜福利视频 | 久久性爱成人 | 成人一级A片 | 亚洲无码电影在线观看 | 欧美性爱91 | 草 榴一区二区三区 | 好吊视频一区二区三区四区 | 国产午夜精品一区二区芒果视频 | 99ri国产在线 | 婷婷夜色福利网 | 想看操逼视频 | 狠狠艹狠狠干 | 视频黄色国产 | 国产精品第一 | 天天看天天干天天操 | 婷婷丁香五月久久 | 青娱乐少妇在线免费视频 | 日韩三级片无码 | 最近中文字幕免费MV第一季歌词怀孕 | 麻豆久久久久久久 | 欧美www在线观看 | 青青草原视频在线观看免费 | 欧美视频色 | 日本一区区在线视频 | h片免费网站 | a片一级免费 | 天天综合永久入口 | www.henhengan | sese欧美 | 国产精品99久久久久久成人 | 五月丁香狠狠爱 | 激情青青草 | 麻豆午夜成人无码电影 | 天天操天天干天天爱 | 操老女人视频在线观看 | 日韩不卡天堂 | 国产一级婬乱片A片 | 中文字幕在线免费观看 | 大香蕉伊人电影 | 人人爽人人奭人人片AV | 日韩无码123区 | 红桃视频成人A片 | 好屌日在线视频 | 国产传媒天美果冻精品亚洲一区二区三区直播 | 免费日逼| 高清无碍一区二区三区 | 免费费国产黄色影院 | 性v天堂网 | av天天干 | 亚洲秘 无码一区二区三区电影 | 亚洲无码在线直播 | HEZ-502搭讪绝品人妻系列 | 香蕉操逼视频 | 久久久久久久大香蕉 | 操操网 | 成人黄视频在线 | 青娱乐最新网址视频 | 日韩欧美A片 | 一级片免费不卡 | 国产成人在线免费自拍 | 大地资源第三页在线观看免费播放最新 | 欧美精品一区二区婷婷 | 黄色影院在线观看 | 麻豆影院久久久 | 蜜臀久久99精品久久久久久宅男 | 大香蕉在线视频99 | 中国久久精品 | 91cao狠狠| 国产三级网址 | 狠狠操 五月天 | 精品国视频 | 浅井舞香AV一二三区 | 色婷婷福利视频 | 夜夜撸综合 | 日韩天天干| 色欲狠狠躁天天躁无码中文字幕 | 日韩一区二区三区免费播放 | 久久天天爽一爽 | 亚洲婷婷av| 午夜三级电影 | 日本国产在线视频 | 豆花理论视频在线播放 | caopeng人人 | 熊猫成人 | 中文电视剧字幕在线播放网站 | A片日本免费看 | 夜夜夜夜撸 | 五月丁香色色激情综合 | 蜜桃av秘 无码一区三区。 | 无码子一区二区 | 日韩操逼逼 | 荫蒂添出高潮A片视频 | 大地影视中文第二页官网 | 人人射人人射 | 三级片毛片视频 | 日本一区二区三区黄色 | 一级片黄色片视频 | 经典国产三级在线 | 欧美日本一区 | 久久精品在 | 欧洲精品口爆 | 操中国老女人逼视频 | 男男无码一区二区三区 | 日韩一级片中文字幕 | 天天操天天干天天摸 | 波多野42部无码喷潮更新时间 | 亚洲无吗视频在线观看 | 亚洲天堂久久 | 亚洲综合狠狠 | 抽插免费视频 | 国产成人无码综合亚洲日韩不卡 | 国产日皮视频 | 国产精品国内自产拍在线 | 天天干天天橾 | 亚洲高清无码在线观看 | 性视频在线 | 国产三级小视频 | 日逼123| 啪啪啪啪啪啪网站 | 黄色视频免费久久 | 爱操电影网站 | 国产欧美精品 | 超碰在线日本 | 麻豆视频md0117 | 免费无码高清 | 日本在线不卡一区 | 日韩在线综合 | 黄色级级级级级级级级级级级级 | 中文字幕久久无码 | 三级无码在线播放 | 四虎黄色网址 | 亚洲视频在线视频 | 91无码人妻一区二区成人aⅴ | 无码导航 | 嗯啊欧美| 在线日韩小视频 | 成人啪啪视频 | 国产精品69毛片高清亚洲 | 中文字幕无码一区二区三区一本久道不卡 | 成人综合娱乐在线视频 | 午夜精品久久久久久久蜜桃麻豆视 | 免费黄色在线观看 | 国产性在线电影 | 黑人一区二区 | 五月婷婷五月丁香 | 激情综合一 | 亲子乱伦一区二区 | 久久成人免费91影片 | 欧美最大操逼网站在线 | 日韩无码乱伦小说 | 婷婷激情视频在线播放 | 大香蕉在线精品视频 | 日韩在线黄色操B视频 | 在线观看中文字幕无码 | 操逼免费视频看看 | 蜜桃传媒视频 | 三级AV久久久 | 青青草在线免费视频 | 台湾娱乐成人网综合网 | 日韩最新三级 | 水蜜桃视频在线观看 | 熟女作爱一区二区视频 | 中文人妻无码一区二区三区久久 | 国产骚妻 | 美女黄色毛片网站 | 51精品一区二区三区 | 最黄视频伦乱日本 | 国产黄色免费观看 | 丁香五月乱伦 | 伊人大香蕉伊人在线 | 欧美三级在线 | 在线观看欧美日韩aa | 中国操逼视频 | 一级黄色绿相 | 一道本一区二区视频 | 久久进入 | 在线中文字幕av 中文字幕久久精品 | 免费看黄A级毛片成人片 | 天天操屄天天日 | 精品级品日韩免费观看 | WWW.亚洲555久久久 | 青青操青青射 | 黄色免费a一片 | 操逼三级片| 豆花av资源 | 色婷婷婷婷婷婷 | 天天爱夜夜爽Av 婷婷99爱99热 | 国产乱伦一二 | 日韩av电影免费在线观看 | 一级日韩影院 | 大香蕉伊人视频在线 | 国产精品久久久久久久激情视频 | 日韩黄片免费看 | 免费大黄网站 | 亚洲中文视频 | 天天日天天干天 | 国产AV日韩 | ww视频在线观看 | 大鸡巴精品视频在线看 | 免费成年人视频 | 一道本一区二区三区在线视频 |