Socket%20option - PowerPoint PPT Presentation

About This Presentation
Title:

Socket%20option

Description:

Socket option Getsockopt ou setsockopt fcntl ioctl – PowerPoint PPT presentation

Number of Views:113
Avg rating:3.0/5.0
Slides: 41
Provided by: unicampBr
Category:

less

Transcript and Presenter's Notes

Title: Socket%20option


1
Socket option
  • Getsockopt ou setsockopt
  • fcntl
  • ioctl

2
Socket option
  • include ltsys/socket.hgt
  • int getsockopt(int sockfd, int level, int
    optname, void optval, socklen_t optlen)
  • int setsockopt(int sockfd, int level, int
    optname, const void optval socklen_t optlen)
  • Both return 0 if OK,1 on error
  • Level code in the system to interpret the
    option
  • Optval pointer to a variable from which the new
    value of the option is fetched by setsocopt or
    into which the current value of the option is
    stored

3
Options
4
Options
5
Socket options
  • Options inherited by a connected TCP socket from
    the listening socket
  • SO_DEBUG
  • SO_DONTROUTE
  • SO_KEEPALIVE
  • SO_LINGER
  • SO_OOBINLINE
  • SO_RCVBUF
  • SO_SNDBUF.

6
SO_BROADCAST
  • Enables/disable the ability to send broadcast
    messages
  • Only for networks that allow broadcast
  • Code EACCESS returned

7
SO_DEBUG
  • Valid for TCP
  • Keeps track of all segment sent and received by
    TCP, kept on a circular buffer which can be
    examined by the kernel using the trpt function

8
SO_DONTROUTE
  • Used to bypass the routing mechanism
  • For UDP sockets, can set flag MSG_DONTROUTE when
    using send, sento, sendmsg
  • Used by routing daemons to ignore the content of
    routing tables

9
SO_ERROR
  • Used to retrieve error code
  • Blocked process is notified via a select or a
    signal driven I/O

10
SO_KEEPALIVE
  • If option is set TCP send automatically a
    keepalive message every two hours without
    exchanging data across the socket.
  • What can happen
  • TCP peer sends an ACK. The applications is not
    notified
  • TCP peer sends na RST. Socket is closed and the
    error message ECONNRESET is returned.
  • If no response is given, at most eight messages
    are sent, one every 75 seconds. After that an
    error code ETIMEDOUT is sent

11
SO_KEEPALIVE
  • (cont.)
  • If an ICMP message host unreachable is
    recieved, it is passed to the application
  • The duration of the interval to send the
    keepalive message can be altered to all sockets
  • Used in servers

12
SO_KEEPALIVE
13
SO_LINGER
  • By default, close send data in buffer and returns
    immediately.
  • So-linger allows change this way of operation

struct linger int l_onoff / 0off,
nonzeroon / int l_linger / linger time
(seconds) /
  • l_onoff is zero, option is turned off close is
    called. Option is ignored
  • l_onoff is nonzsero and l_linger zero buffer
    content is discarded and connection is
    discarded, an RST is sent to the peer, avoids
    time-wait

14
SO_LINGER
  • l_onoff non zero, l_linger non zero process is
    put to sleep until all data in buffer is sent and
    acked or linger period expires
  • The expiration of lingertime can be checked

15
SO_LINGER
16
SO_LINGER
17
SO_LINGER
18
SO_LINGER
  • Application level ack
  • Client
  • char ack
  • Write(sockfd, data, nbytes)
  • n Read(sockfd, ack, 1)
  • Server
  • nbytes Read(sockfd, buff, sizeof(buff))
    Write(sockfd, "", 1)

19
SO_LINGER
20
SO_LINGER
21
SO_OOBINLINE
  • Out-of-band data is put in the normal buffer queue

22
SO_RCVBUF e SO_SNDBUF
  • Set value for the size of send buffer and receive
    buffer
  • Default values
  • TCP old versions 4096 bytes
  • TCP current versions 8192 a 61440 bytes
  • UDP send buffer 9000 bytes and UDP receive buffer
    40000

23
SO_RCVBUF e SO_SNDBUF
  • The size of the buffer needs to be set before
    connect is called at the client and before listen
    is called at the server in the server A
    atribuiĆ§Ć£o do tamanho do buffer deve ser feita no
    cliente antes de chamar connect e no servidor
    antes de chamar listen
  • At least 3 MSS is recommended

24
Bandwidth delay product
  • Bandwidth Delay product amount of byte in the
    pipe
  • Transmission rate x RTT
  • For instance T1 (1.536.000 bytes/sec) with an
    RTT of 60ms, bandwidth-delay product 11,520
    bytes
  • If buffer is smaller than bandwidth-delay product
    TCP becomes the bottleneck
  • Need larger buffers for high speed networks or
    networks with long propagation delays (satellite
    networks)

25
SO_RCVLOWAT e SO_SNDLOWAT
  • Changes the low-water mark of the buffer
  • Minimum amount of data required by select to
    consider data as either read or written

26
SO_REUSEADDR
  • Allows server to perform bind on a port even if
    it is being used by another process (typically
    connected socket derived from a listening
    sockets)
  • Allows multiple instances of the same server to
    be started on the same port as each instance
    binds a different local IP address

27
SO_REUSEADDR
  • Allows a single process to bind the same port to
    multiple sockets, as long as each bind specifies
    a different local IP
  • Allows completely duplicated bindings a bind of
    an IP address and port when the same IP address
    and port are already bound to another socket.
    Useful for multicast when the socket option
    SO_REUSEPORT is not available

28
SO_REUSEPORT
  • SO_REUSEADDR is equivalent to SO_REUSEPORT when
    multicast is used

29
SO_TYPE e SO_USELOOPBACK
  • SO_TYPE returns the socket type
  • SO_USELOOPBACK receives copy of all transmitted

30
IPv4 Options
  • Level IPROTO_IP
  • IP_HDRINCL allows writing to IP header used
    in RAW_SOCKET (ICMP)
  • What cannot be attributed
  • Checksum
  • IP identification field
  • Output interface INADDR_V4
  • Implementation dependent option

31
IPv4 Options
  • IP_options allow setting of IP datagram fields
  • IP_RECVDSTADDR allow to return a UDP packet as
    ancillary data (control) by using recvmsg
  • IP_TOS allow setting field ToS

32
IPv4 Options
  • IP_TTL allow writing and reading to filed Time
    to Live (TTL). Default 64

33
IPv6 Options
  • LEVEL IPTPROTO_IPv6
  • IPv6_ADDRFOMR allows converting an IPv4 socket
    to an IPv6 socket
  • IPv6 checksum computes and store checksum for
    outgoing packets and verify checksum for incoming
    packets. Parameter indicates where checksum
    field is located

34
IPv6 Options
  • IPv6_DSTOPTS specifies that any received IPv6
    destination option are to be returned as
    ancillary data by recvmsg
  • IPv6_HOPLIMIT specifies that the received hop
    limit field to be returned as ancillary data by
    recvmsg
  • IPv6_HOPOPTS specifies that the option
    hop-by-hop has to be returned as ancillary by
    recvmsg
  • IPv6_NEXTHOP specifies the next hop a packet
    should go

35
IPv6 Options
  • IPv6_PKTINFO specifies that destination address
    and interface are to be returned as ancillary
    data
  • IPv6_RTHDR specifies that the routing fileds of
    the header should be returned as ancillary data
    by rcvmsg
  • IPv6-UNICAST_HOPS set thehop limit

36
ICMPv6
  • Level IPROTO_ICMPv6
  • ICMP6_FILTER specifies which of the 256 ICMPv6
    messages can be sent on a podem RAWSOCKET

37
OpƧƵes TCP
  • TCP_KEEPALIVE specifies the time interval in
    seconds that the connection should send keepalive
    messages
  • TCP_MAXSEG allows setting and retrieving value
    of MSS
  • TCP_NODELAY disable Nagles algorithm which
    prevents small packets to be sent. Small segments
    are sent in case there are pending acks

38
OpƧƵes TCP
39
OpƧƵes TCP
40
OpƧƵes TCP
  • TCP_STDURG changes interpretation of the urgent
    pointer field
Write a Comment
User Comments (0)
About PowerShow.com