On 4/7/2016 11:42 AM, Dale R. Worley wrote:
> [email protected] writes:
>> I agree - the current format from the text comes from the existing text 
>> for TCP and SCTP in another draft. and I think we  may need to work out
>> how to handle
>> [...]
>> I probably need help - I think there are different many ways in which UDP
>> uses ports. Offers from anyone on how to get started would be great.
> 
> Even in TCP, the semantics of connection setup is more complicated that
> you'd think at first.  If I have it correctly, it runs:
> 
>       Passive         Active
>       Endpoint        Endpoint
> 
>       Create socket
>       Bind socket to listening address

There's a step here where you get to set the limit on how many pending
connection requests can be allowed (the listen() call), but that's an
OS-ism IMO, not a protocol or API issue.

>       Activate listening
> 
>                       Create socket

optionally bind to local address

>                       Connect
> 
>       Incoming connection event
>       Accept connection

an optional parameter to this accept call involves whether the remote
socket pair is specified or not.

> At least in the protocol, it's possible for both endpoints to be active,
> but they have to have prior agreement regarding the addresses and ports

almost - they only need to agree on the port one one side exactly; in
both cases, the addresses need to reach each other but could be one of
any number of addresses on the machine.

E.g.:

        A calls B.alpha using dest port 80
while
        B calls A.omega using source port 80

> and send their initial packets within one RTT of each other, so I don't
> know if that possibility is ever used in practice. 

It happens routinely if you end up calling yourself.

> Or whether the
> Berkeley sockets API supports it.

It should, as per above.

> OTOH, the TAPS work might not be attempting to capture the semantics of
> connection setup.

It had better, IMO.

> The process for UDP is not much simpler.  My memory is:
> 
>       Passive         Active
>       Endpoint        Endpoint
> 
>       Create socket
>       Bind socket to listening address
you only need to bind to a port; the address can float

you can optionally also lock the remote address using the "connect"
call, even though it doesn't issue a connection.

>                       Create socket
>                       Send-to -or- Connect, then Send

or bind too. Same reasons - you can pin the local or remote socket pair.


>       Incoming connection event
>       Connect (in the TAPS paradigm)

IMO, this should be removed. There can't be state associated with UDP.

>       Incoming packet event
>       Receive packet

The receive packet for UDP passes more information than for TCP; in UDP,
you need to indicate where the message came from too.

_______________________________________________
Taps mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/taps

Reply via email to