Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 [email protected]...
-
Upload
johnathan-warren -
Category
Documents
-
view
229 -
download
1
Transcript of Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 [email protected]...
![Page 1: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/1.jpg)
hufs MCLABhufs MCLAB
Chapter 22
Protocol Control Blocks
HUFS ICE 200530032
김 영 준[email protected]
TCP/IP Illustrated, Volume 2TCP/IP Illustrated, Volume 2
![Page 2: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/2.jpg)
hufs MCLABhufs MCLAB
Contents Introduction Code Introduction inpcb{} Structure in_pcballoc( ) and in_pcbdetach( ) Functions Binding, Connecting, and Demultiplexing in_pcblookup( ) Function in_pcbbind( ) Function in_pcbconnect( ) Function in_pcbdisconnect( ) Function in_setsockaddr( ) and in_setpeeraddr( ) Functions in_pcbnotify( ) , in_rtchange( ) , and in_losing( ) Functions Summary
![Page 3: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/3.jpg)
hufs MCLABhufs MCLAB
Introduction Protocol Control Block 은 UDP, TCP socket 에 필요한
정보들을 저장 Internet Protocol 은 Internet protocol control block 과 TCP control
block 을 유지 UDP 는 connectionless 이기 때문에 유지 X (UDP control block X)
Foreign, Local IP address and port, IP header proto type, IP option, routing table entry, TCP control block state information
![Page 4: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/4.jpg)
hufs MCLABhufs MCLAB
File Type DTYPE_SOCKETSocket Type
SOCK_DGRAMSOCK_STREAM
Protocol layer called inpcb{} 를 만들어서 socket{} 연결
TCP tcpcb{} 생성 inp_ppcb 와 t_inpcb 연결UDP null pointer
Socket pair 들로부터 ip addr, port 입력
Internet PCB 는 double linked listHead 는 gloval inpcb structure (udb , tcp)3 개의 member, lport 는 후에 단명포트로 ..
Internet PCBInternet PCB 는 는 transport layer data structuretransport layer data structure Used by TCP, UDP, raw IPUsed by TCP, UDP, raw IP Not by IP, ICMP, IGMPNot by IP, ICMP, IGMP
![Page 5: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/5.jpg)
hufs MCLABhufs MCLAB
Code Introduction Source
Global Variables
Kernel’s malloc function 에 의해서 PCBs 할당 Type of M_BUF , socket structure 는 M_SOCKET
![Page 6: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/6.jpg)
hufs MCLABhufs MCLAB
inpcb Structure
struct route inp_route Foreign address 로 가는 route 의 주소를 inp_route entry 에 저장
Double Linked ListHead 를 가리키는 pointerUDP list udp , TCP list tcp
Network Byte OrderTransport Layer 마다 port number 저장 XTCP 의 경우 tcpcb 에 속해있다
User output 의 경우 kernel start,Socket layer 에 대응하는 Internet PCB 연결
Processing a received IP datagram 의 경우Kernel start, PCB 에 대응하는 Socket Structure 와 연결
![Page 7: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/7.jpg)
hufs MCLABhufs MCLAB
inp_flags member
struct ip inp_ip Copy of IP header, but only used by TOS and TTL
TOS is initialized to 0 TTL is initialized by transport layer(default TTL to 64) IP_TOS or IP_TTL socket option 사용으로 변경하면 새로운 값은 in
pcb.inp_ip struct 에 저장 TCP, UDP 는 이 structure 를 사용하고 , prototype IP header 처럼 I
P datagram 을 전송할 때 사용한다 .
![Page 8: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/8.jpg)
hufs MCLABhufs MCLAB
struct mbuf *inp_options IP_OPTIONS socket option 은 출발지 route 를 설정할 때 사용 IP_OPTIONS socket option 을 사용해서 process 는 datagram 을
outgoing ip_pcbopts() 에 의해서 mbuf 안에 option 의 copy 가 저장 , point
er 는 mbuf 를 가리킨다 .
struct ip_moptions *inp_moptions User’s IP multicast option 에 대한 pointer
![Page 9: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/9.jpg)
hufs MCLABhufs MCLAB
in_pcballoc( ) and in_pcbdetach( ) Functions Internet PCB is allocated by TCP, UDP, raw IP
when a socket is created. PRU_ATTACH request 은 socket system call 에 의해 나타남 .
60-70 Allocate PCB and initialize to zero PCB 안에서 IP, port number 가 0 로 initialize 되야 하므로 ..
71-74 Link Structures together insque(inp, head); 새로운 PCB inp 를 double linked list
![Page 10: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/10.jpg)
hufs MCLABhufs MCLAB
288-300 socket structure 안의 PCB pointer 를 0 으로 set sofree(so) struct socket release If mbuf 에 IP options 이 있으면 release by m_free() If route is held by this PCB, release by rtfree() multicast options are also release by ip_freemoptions()
301-302 Double linked list 에서 PCB 제거 Kernel 에 할당된 memory 를 FREE()
![Page 11: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/11.jpg)
hufs MCLABhufs MCLAB
Binding, Connecting, and Demultiplexing Binding of Local IP Address and Port Number
PCB 에 local port 가 존재하기 때문에 EADDRINUSE error 만약 포트를 사용한다면 ..
SO_REUSEADDR SO_REUSEPORT
Connecting a UDP Socket TCP client 뿐만 아니라 , UDP client, server 도 가능 Socket 을 특정한 peer 만 UDP datagram 을 교환하도록 제한
![Page 12: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/12.jpg)
hufs MCLABhufs MCLAB
Demultiplexing of Received IP Datagrams by TCP
TCP 는 in_pcblookup() 을 통해서 Internet PCB 의 list 에서 matching 되는 port 를 찾아서 segment 를 receive
Match 0, 1 (local IP or foreign IP), 2 (both local IP and foreign IP) 이때 wildcard match 를 한다 . Wildcard match 최소값을 match Incoming segment from {140.252.1.11:1500} to {140.252.1.29:23}
Incoming segment from {140.252.1.11:1501} to {140.252.1.29:23}
Match ??
![Page 13: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/13.jpg)
hufs MCLABhufs MCLAB
Demultiplexing of Received IP Datagrams by UDP 1. Broadcast, Multicast IP address 로 들어오는 UDP datagram 에
대해서 모두 socket 에 matching 한다 . 2. Unicast IP address 로 들어오는 UDP datagram 에 대해서는
오직 하나의 socket 에 matching 한다 . 이때 최소값의 wildcard match 를 적용
Received datagram from {140.252.13.34:1500} to {140.252.13.63:577}
Received datagram from {140.252.1.11:1500} to {140.252.1.29:577}
![Page 14: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/14.jpg)
hufs MCLABhufs MCLAB
in_pcblookup( ) Function The function in_pcblookup serves four different purposes
1. TCP or UDP 가 IP datagram 을 받을 때 , in_pcblookup() 은 Internet PCBs 의 protocol’s list 를 scan, PCB 에 matching 되는 datagram 을 receive. Transport layer demultiplexing of received datagram
2. Process 가 bind() system call 에 의해서 실행될 때 , local IP addr, local port 를 할당 , 이때 in_pcbbind 는 protocol 에 의해 call하고 , 요청된 local addr pair 가 이미 할당되는지를 확인
3. Process 가 bind() system call 에 의해서 실행될 때 , 요청한 ephemeral port 가 socket 에 할당 , kernel 은 in_pcbbind 에 의해 사용 가능한 port 인지 확인 , 만약 사용하고 있다면 next ephemeral port 를 할당 , 할당될 때 까지
4. Process 가 connect() system call 에 의해서 실행될 때 , in_pcbbind() 는 요청된 socket pair 가 unique 한지 확인
in_pcbbind() call in_pcblookup
![Page 15: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/15.jpg)
hufs MCLABhufs MCLAB
Two options confuse the logic of the function
1. SO_REUSEADDR or SO_REUSEPORT socket option은 중복된 local address 를 허용
2. Wildcard match OK 는 socket 이 다른 local interface에 도착하는 UDP datagram 을 accept 하는 것을 의미하고 , Wildcard match 를 금하는 경우는 foreign IP address and port number 로 connecting 했을 때를 말함
![Page 16: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/16.jpg)
hufs MCLABhufs MCLAB
Compare local port numberCompare local address
Compare foreign addressCompare foreign port number
만약 Wildcard 를 사용하지 않으면 loop
Remember best matchreturn if exact macth found
![Page 17: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/17.jpg)
hufs MCLABhufs MCLAB
Example – Demultiplexing of Received TCP Segment
laddr=140.252.1.29 , lport=23 , faddr = 140.252.1.11 , fport=1500
1. First loop Wildcard is 1(foreign IP) matchwild 1 2. Second loop Wildcard is 2(foreign IP,local IP) matchwild 1 3. Third loop Wildcard is 0 matchwild 0
Break;
![Page 18: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/18.jpg)
hufs MCLABhufs MCLAB
in_pcbbind( ) Function Bind a local address and port number to a socket.
1. From bind for a TCP socket (normally to bind a server’s well-known port)
2. From bind for UDP socket (either to bind server’s well-known port or to bind an ephemeral port to a client’s socket)
3. From connect for a TCP socket, if the socket has not yet been bound to a nonzero port (this is typical for TCP clients)
4. From listen for a TCP socket, if the socket has not yet been bound to a nonzero port (this is rare, since listen is called by a TCP server, which normally binds a well-known port, not an ephemeral port)
5. From in_pcbconnect, if the local IP address and local port number have not been set (typical for a call to connect for a UDP socket or for each call to sendto for an unconnected UDP socket)
Implicit bind
Explicit bind
![Page 19: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/19.jpg)
hufs MCLABhufs MCLAB
IP addr 에 assign 되었는지 확인
Wildcard 사용 여부를 확인
nam 이 NULL 이면 implicit bind Non NULL 이면 explicit bind
![Page 20: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/20.jpg)
hufs MCLABhufs MCLAB
Multicast 라면 REUSE 설정 (port)
!INADDR_ANY 인데 interface 가 0면 error
Port 존재하면
Global , all zero addr 로 주소 결정 t = 0 일 때 원하는 addr 를 찾은 경우
사용 가능한 port 결정
![Page 21: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/21.jpg)
hufs MCLABhufs MCLAB
in_pcbconnect( ) Function in_pcbconnect specifies the foreign IP address and port numb
er for a socket.
1. From connect for a TCP socket (required for a TCP client) 2. From connect for a UDP socket (optional for a UDP client,
rare for a UDP server) 3. From sendto when a datagram is output on an unconnected
UDP socket (common) 4. From tcp_input when a connection request (SYN segment)
arrives on a TCP socket that is in the LISTEN state (standard for a TCP server)
![Page 22: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/22.jpg)
hufs MCLABhufs MCLAB
Argument 에 대한 check
Global , Primary IP addr
0.0.0.0 (wildcard) 인지 broadcast 구분
![Page 23: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/23.jpg)
hufs MCLABhufs MCLAB
Route release
Route 가 있으면Route 와 addr 가 다르면DONTROUTE set 이면
DONTROUTE 가 없고 route 경로가 없으면ROUTE 경로 설정
Outgoing interface 결정
loopback 이 아니면
interface addr
현재 지정된 addr
![Page 24: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/24.jpg)
hufs MCLABhufs MCLAB
Multicast 일 경우
Mbuf 의 moptions 가져오고 , multicast addr 을 addr 로 저장
addr 를 route addr 로 저장
socket pair 가 unique 한지 check
Implicit bind
Broadcast 주소 사용가능한 addr 없다는 error
unique 하지 않으면 error
ephemeral port
![Page 25: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/25.jpg)
hufs MCLABhufs MCLAB
in_pcbdisconnect( ) Function
Remove foreign association Foreign IP address to all 0s (INADDR_ANY) Foreign port number to 0
Unconnected UDP socket 에서 datagram 전송 시 Process sendto( ) in_pcbconnect( )
udp_output( ) datagram send in_pcbdisconnect( ) Connected UDP socket 에서 connect 가 call 했을 때
PCB 를 재사용 하기 위해서 284-285 PCB 가 file table 을 더 이상 참조하지 않을 때
(SS_NOFDREF is set) in_pcbdetach( ) release the PCB
![Page 26: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/26.jpg)
hufs MCLABhufs MCLAB
in_setsockaddr( ) and in_setpeeraddr( ) Functions getsockname system call
Local protocol address of a socket PRU_SOCKADDR request Call in_setsockaddr( )
getpeername system call Foreign protocol address PRU_PEERADDR request Call in_setpeeraddr( )
![Page 27: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/27.jpg)
hufs MCLABhufs MCLAB
in_pcbnotify( ) , in_rtchange( ) , and in_losing( ) Functions
Processing of ICMP errorsRoute 경로를 재설정 , All IP datagram 에 영향을 주므로 따로 전달
TCP 에 의해서 호출
ICMP error message
struct protosw{ } 안의 pr_ctlinput entry
source buffer Full
![Page 28: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/28.jpg)
hufs MCLABhufs MCLAB
cmd , dest address family verify
Redirect handlePRC_HOSTDEAD old error, not used
Global array 를 errno value 로후에 notify( ) 의 argument
notify tcp_notify or udp_notify
Call notify function for selected PCBs
![Page 29: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/29.jpg)
hufs MCLABhufs MCLAB
in_rtchange Function
ICMP Errors and UDP Sockets UDP socket 이 connect 가 아니면 application 은 받지 못한다 . Socket 의 foreign IP addr, port 로 제한했기 때문 in_pcbnotify() dst argument 안에 foreign IP addr, port 가
있어야 하는데 , connect UDP 가 아니면 inp_faddr, inp_fport 를 저장 X
UDP socket 은 ICMP error 를 못 받는다 .
ICMP error is redirect 일때 , in_pcbnotify() 가 callPCB 가 route 를 hold 하면 rtfree, 그리고 empty 이 function 에서 route update 하지 않고 ,다음에 PCB 가 사용될 때 new route 가 ip_output 에의해 할당
![Page 30: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/30.jpg)
hufs MCLABhufs MCLAB
in_losing Function
4 번 이상의 retransmission timer 초과 시TCP 에 의해서 호출
Generate routing messagert_addrinfo structure 는 실패한 route 정보로 체워져 있다 .
Delete or release routeRTF_DYNAMIC redirectroute 는 RTM_DELETE 의 요청을 하는rtrequest() 에 의해 delete
![Page 31: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/31.jpg)
hufs MCLABhufs MCLAB
Summary Internet PCB 는 Internet socket(TCP, UDP, raw IP) 관련 All Internet socket 에 공통된 정보를 포함
Local and foreign IP addresses, route structure pointer All PCBs 은 protocol 에 의해서 doubly linked list 로 구성
udp , tcp …
1. in_pcblookup 는 TCP, UDP 에 의해서 call, received datagram 에 대해서 demultiplex, 이때 wildcard match
Also in_pcbbind, in_pcbconnect call 해서 local address, process 가 unique한지 , 또 local,foreign address,process 가 unique 한지 확인
2. in_pcbbind 는 explicitly, implicitly 하게 local address, port 를 bind
explicitly 는 process 가 bind call, implicitly 는 TCP, UDP 가 bind 없이 connect 하거나 sendto call 할 때
3. in_pcbconnect 는 foreign address, port 를 set
local address 가 set 되지 않았다면 foreign address 의 경로에 적합한 local interface 가 local address, local port 가 set 되지 않았다면 in_pcbbind 가 socket 에 ephemeral port 를 선택
![Page 32: Hufs MCLAB C hapter 22 Protocol Control Blocks HUFS ICE 200530032 김 영 준 ddanggae@hufs.ac.kr TCP/IP Illustrated, Volume 2.](https://reader035.fdocument.pub/reader035/viewer/2022081504/56649ea15503460f94ba53e8/html5/thumbnails/32.jpg)
hufs MCLABhufs MCLAB
Summary of in_pcbbind( ) and in_pcbconnect( )