chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료
-
Upload
stone-caldwell -
Category
Documents
-
view
61 -
download
0
description
Transcript of chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료
![Page 1: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/1.jpg)
TCP/IP Illustrated, Volume ITCP/IP Illustrated, Volume I
chapter 17 TCP : chapter 17 TCP : 전송 제어프로토콜전송 제어프로토콜chapter 18 TCP : chapter 18 TCP : 연결확립과 종료연결확립과 종료
200530032 김영준
![Page 2: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/2.jpg)
TCP TCP 의 신뢰성 있는 서비스의 신뢰성 있는 서비스 응용 데이터는 TCP 가 전송하기에 적합한 크기로 나뉘어
진다 . TCP 는 세그먼트를 보낼 때 타이머를 설정하고 ,
상대편으로부터 세그먼트를 수신했다는 것을 알리는 확인응답을 기다린다 .
TCP 가 연결의 상대 편으로부터 데이터를 받으면 확인응답을 보낸다 .
TCP 는 헤더와 데이터에 검사 합을 이용한다 . TCP 세그먼트는 순서에 맞게 도착하지 않아도 된다 . 수신 측 TCP 는 중복된 데이터를 버려야 한다 . TCP 는 흐름 제어를 제공한다 .
![Page 3: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/3.jpg)
TCP TCP 헤더헤더
![Page 4: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/4.jpg)
URG - 긴급 포인터가 유효함 ACK – 확인응답 번호가 유효함 PSH – 수신 측은 데이터를 가능한 빨리 App. 에 보내야
한다 . RST – 연결을 재설정 SYN – 연결을 초기화 , 순서 번호를 동기화 FIN – 데이터 전송을 종료함
![Page 5: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/5.jpg)
연결 확립과 종료연결 확립과 종료
![Page 6: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/6.jpg)
![Page 7: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/7.jpg)
실제 테스트 결과
![Page 8: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/8.jpg)
![Page 9: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/9.jpg)
연결 확립의 타임아웃연결 확립의 타임아웃
![Page 10: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/10.jpg)
1 번째 – client 의 LAN 선을 뽑은 상태로 대기시간 13 초2 번째 – server 의 LAN 선을 뽑은 상태로 대기시간 24 초
2 번째 상황에서 다시 같은 테스트 결과 대기시간은 약 3 초
![Page 11: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/11.jpg)
최대 세그먼트 크기최대 세그먼트 크기 MSS 는 TCP 가 다른 연결된 host 에게 보낼 수
있는 가장 큰 데이터 덩어리 MSS 옵션은 SYN 세그먼트에서 부가 서로간에 MSS 옵션을 받지 못한다면 , default 로
536 bytes Ether net 의 경우 MSS 최대 값은 1460 bytes
![Page 12: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/12.jpg)
![Page 13: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/13.jpg)
TCP TCP 절반 종료절반 종료 TCP 는 연결의 한 쪽 종단이 데이터를 전송 받고
있는 상태에서 출력을 종료하는 기능을 제공 프로그래밍 인터페이스가 제공해야 함
![Page 14: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/14.jpg)
close() close 는 지정 번호의 참조 계수를 1 씩 감소 ,
계수가 0 에 이르면 소켓을 닫는다 . close 는 양방향의 데이터 전송 모두를 종료
int shutdown(int sockfd, int howto) SHUT_RD SHUT_WR SHUT_RDWR
![Page 15: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/15.jpg)
TCP TCP 상태 천이도상태 천이도
정상적인 client
정상적인 server
![Page 16: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/16.jpg)
일반적인 연결 확립과 종료에 대한 TCP 상태
![Page 17: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/17.jpg)
TIME_WAIT 상태 2MSL(Maximum Segment Lifetime) 대기 상태 TCP 가 ACK 를 잃어버린 경우에 ACK 재전송 하기
위해서 2MSL 대기 상태에 있는 동안 , socket pair 재사용 X
SO_REUSEADDR 옵션을 사용해서 재사용 같은 socket pair 는 연결 X
![Page 18: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/18.jpg)
Quiet time TCP 가 재 가동 후 MSL 시간 동안 어떠한 연결도
확립할 수 없도록 한다 .
FIN_WAIT_2 상태 FIN 을 보내고 (FIN_WAIT_1 상태 ), 상대편 종단은
이에 ACK 를 보내고 (FIN_WAIT_2 상태 ), 다시 FIN을 보낸다 . FIN_WAIT_2 상태에서 TIME_WAIT 상태로 바뀐다 .
![Page 19: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/19.jpg)
재설정 세그먼트 재설정 세그먼트 (RST)(RST)
존재하지 않는 포트에 대한 연결 요구
연결 중단 대기중인 모든 데이터를 폐기하고 즉시 재설정 신호를
전송 RST 의 수신 측은 상대방에게 일반적인 연결 종료가 아닌
중단 (abort) 을 했다고 알릴 수 있다 .
![Page 20: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/20.jpg)
동시 개방과 동시 종료동시 개방과 동시 종료 Simultaneous open
Simultaneous close
![Page 21: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/21.jpg)
TCP TCP 옵션옵션
Kind=2 Len=4 MSS
Kind=1 Kind=3 Len=3 Shift count
Kind=1 Kind=1 kind=8 Len=10
Timestamp value
Timestamp echo reply
32 bits
Kind=0
![Page 22: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/22.jpg)
TCP TCP 서버 설계서버 설계 수신연결 요구 큐
대기 중인 종단점은 TCP 에 의해 받아들여지지만 (three-way 핸드쉐이크 ), 응용에는 아직 수신되지 않은 연결의 고정 길이의 큐를 갖는다 .
응용은 이 큐에 대해서 한계를 설정 , 이것을 backlog 라고 부른다 .
![Page 23: chapter 17 TCP : 전송 제어프로토콜 chapter 18 TCP : 연결확립과 종료](https://reader033.fdocuments.net/reader033/viewer/2022061614/56813561550346895d9cc7ae/html5/thumbnails/23.jpg)
새로운 연결에 대한 큐에 공간이 있다면 TCP 모듈은 SYN 에 대해서 ACK 를 보내고 연결을 완성
공간이 없으면 , SYN 을 무시하고 , 아무것도 되돌려 주지 않는다 .