TCPIP Socket Socket life cycle Copyright 2005 Thin
- Slides: 21
TCP/IP Socket 조태문
Socket life cycle Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 2
Simultaneous Open • 양쪽 모두 Active하게 접속을 하려고 할 때 서로가 SYN을 보내어서 각각 교차해서 연결이 성립 되는 경우를 Simultaneous Open이라고 한다. Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 5
Simultaneous Close • 양쪽 모두 Active하게 Close를 시도 Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 6
Server socket의 생성과정 1 – socket() • 소켓(통신 종단점)을 생성하여 socket의 file descriptor를 반환한다. • int socket(int domain, int type, int protocol); – domain ( socket address famly ) • UNIX : 유닉스 도메인 소켓, IPC용으로 많이 사용됨. • INET : TCP/IP 프로토콜을 이용한 인터넷주소 패밀리, 보통의 네트웍프 로그래밍시 주로 사용 • IPX : 노벨의 IPX 프로토콜 • AX 25아마추어 라디오 X. 25 • X 25 X. 25 프로토콜 – type • SOCK_STREAM ( TCP ) • SOCK_DGRAM ( UDP ) • SOCK_RAW ( RAW ) – protocol • 0(IPPROTO_IP) : system defualt protocol • 6(IPPROTO_TCP) : tcp • 17(IPPROTO_UDP) : user datagram protocol Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 8
Server socket의 생성과정 2 – bind() • • 소켓에 특성을 부여(소켓과 특성을 묶는다(bind))한다. int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); – struct sockaddr *my_addr struct sockaddr{ u_short sa_family; char sa_data[14]; }; • struct sockaddr_in { short sin_family; // AF_INET u_short sin_port; //네트웍 바이트 오더로 이루어진 포트 번호 struct in_addr sin_addr; // 네트웍 바이트 오더로 이루어진 아이피 번호 char sin_zero[8]; }; Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 9
Server socket의 생성과정 3 – listen() • • socket을 listen(연결대기) 상태로 만든다. int listen(int socket, int backlog); – socket : socket file descriptor – backlog : 연결이 완료되지 않은 요청 대기열(que)의 갯수. 3 -way hand shaking 기법 중 최초의 SYN이 대기하게 된다. Linux 계열의 경우 커널마다 차이가 있지만 주로 해당 값이 아닌 ‘/proc/sys/net/ipv 4/tcp_max_syn_backlog’의 값을 참조하여 대기열 크기 를 조절한다. 이는 3 -way hand shaking의 보완상 취약점인 SYN flooding 공격을 막기 위함. Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 10
socket() 수행 후 Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 11
listen() 수행 후 Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 12
accept() 수행 후 Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 13
close() 수행 전 Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 14
Socket의 주요 옵션 - 1 • TIME_WAIT 상태의 Socket에 Bind()가 가능한 소켓으 로 속성을 변경한다. • setsockopt(serv_sock, SOL_SOCKET, SO_REUSEADDR, (int *)&optval, sizeof(optval)); Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 15
Socket의 주요 옵션 - 2 • Nagle 알고리즘을 사용하지 않도록 설정한다. • setsockopt(serv_sock, IPPROTO_TCP, TCP_NODELAY, (int *)&optval, sizeof(optval)); Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 16
Read Timeout : socket system call • SO_RCVTIMEO and SO_SENTIMEO • time structure 사용 struct timeval{ long tv_sec; /*second*/ long tv_usec; /*microsecond*/ }; • struct timeval time; time. tv_sec = 1; time. tv_usec = 10; setsockopt( int sock, SOL_SOCKET, SO_RCVTIMEO, &time, sizeof(time) ); Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 19
Read Timeout : select() • fcntl()를 이용해서 listen socket을 NON_BLOCK상태로 만든다. • 이를 select()로 감시하여 검출한다. Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 20
서울특별시 서초구 반포동 59 -4 송원빌딩 3, 4층 Tel 02 536 2840 Fax 02 536 3601 Homepage www. thinmultimedia. co. kr Copyright © 2005 Thin Multimedia, Inc. All Rights Reserved. 21
- History of the osi model
- Tcpip
- Modelo tcpip
- Osi vs tcp/ip
- Diagrama tcp
- Tcp/ip logo
- Osi tcpip
- Tcpip model
- Socket life cycle
- Pearson education inc publishing
- Copyright 2005
- 2005 pearson prentice hall inc
- Copyright 2005
- Copyright 2005
- Copyright 2005
- Copyright 2005
- Copyright 2005
- Copyright 2005
- Copyright 2005
- Water cycle brain pop
- Quizlet
- Difference between phosphorus cycle and carbon cycle