제 19 장 TCP 대화식 데이터 흐름.

Slides:



Advertisements
Similar presentations
1)RACK 2)UPS 3)P D U 장치 4)Server Group 5)KVM Switch 7)UPS 를 위한 HUB 6) RACK Monitor.
Advertisements

제 20 장 TCP 대용량 데이터 흐름.
1. 전송 계층 서비스 프로세스 대 프로세스 통신 전송 계층 프로토콜은 프로세스 대 프로세스 통신 제공

제 18 장 TCP/IP 연결 확립과 종료.
7 – 세그먼트 동작 시키기 (0~9, A, B, C, D, E, F 표시하기)
1. Window size는 buffer size?
6 데이터 링크 계층.
제8장 네트워킹.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Network Lab. Young-Chul Hwang
윤 홍 란 다이알로그(대화상자) 윤 홍 란
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
제 4장 주소변환 프로토콜 (ARP : Address Resolution Protocol)
VoIP (Voice Over Internet Protocol)
4.3 Managing TCP sessions 4조 임종철,임정묵,이규윤.
제 17 장 TCP : 전송 제어 프로토콜 정보통신연구실.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
8장. 원격지 시스템 관리하기.
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
임베디드 실습 # LED, 7’Segment 제어
10 장 데이터 링크 제어(Data Link Control)
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
제 22 장 TCP Persist Timer.
제 24 장 그 밖의 TCP 기능과 성능.
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
Chapter 5 UDP Socket 소켓 프로그래밍.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
Trivial File Transfer Protocol (TFTP)
시스템 인터페이스 Lab3 Unix 사용법 실습.
Network Security WireShark를 활용한 프로토콜 분석 I.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 27 장 파일 전송 프로토콜.
제 12 장 전송 제어 프로토콜(TCP) 12.1 프로세스간 통신 12.2 TCP 서비스 12.3 세그먼트 12.4 옵션
6 데이터 링크 계층 학습 목표 오류 제어, 흐름 제어의 원리와 동작 방식을 이해한다.
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
CGI란 무엇인가? CGI(Common Gateway Interface)의 정의
MAIL CLIENT 김창우 윤성훈 이경재.
20 장 네트워킹과 인터네트워킹 장치 20.1 리피터(Repeaters) 20.2 브리지(Bridges)
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
2 네트워크 모델 학습 목표 모듈 개념을 알아보고 계층 구조의 필요성을 이해한다.
다중처리 기술 School of Electronics and Information. Kyung Hee University.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
웹(WWW).
Web Storage 인공지능 연구실.
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 04. TCP 서버/클라이언트.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
김덕용 게임 엔진론 Project 2차발표.
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
                                  6장 엔코드 디코드 회로 10진수와 2진수의 변환 및 표시 4 7 A B C D BCD 변환.
AJAX? Cho Hyun Min.
Presentation transcript:

제 19 장 TCP 대화식 데이터 흐름

차례 서론 대화식 입력 지연된 확인응답 Nagle 알고리즘 윈도우 크기 정보 요약

19.1 서론 TCP 세그먼트 (TCP 트래픽에 관한 연구에 따르면) 이유 패킷-카운트를 기준으로 분류 19.1 서론 TCP 세그먼트 (TCP 트래픽에 관한 연구에 따르면) 패킷-카운트를 기준으로 분류 대용량 데이터 : 50% (FTP, 전자우편, 유즈넷 뉴스) 대화식 데이터 : 50% (Telnet, Rlogin) 바이트 카운트 기준으로 분류 대용량 데이터 : 90% 대화식 데이터 : 10% 이유 대용량 데이터 세그먼트는 최대 길이가 되는 반면, 대화식 데이터는 훨씬 작기 때문.

19.2 대화식 입력 Rlogin 연결에서의 데이터 흐름 한 번에 한 바이트씩 전송 4가지 세그먼트 생성 19.2 대화식 입력 Rlogin 연결에서의 데이터 흐름 한 번에 한 바이트씩 전송 4가지 세그먼트 생성 (1) 클라이언트로부터 대화식 키보드 입력 (2) 서버로부터 키보드 입력에 대한 확인응답 (3) 서버로부터 키보드 입력에 대한 에코 (4) 클라이언트로부터 에코에 대한 확인응답 데이터 바이트 데이터 바이트의 ack 데이터 바이트의 에코 에코된 바이트의 ack 키보드 입력 서버 에코 디스플레이 클라이언트

예제 5개의 문자(date\n)를 키보드로 입력했을 때의 TCP 세그먼트 svr4 % date svr4 % Sat Feb 6 07:52:17 MST 1993 svr4 % 1 0.0 bsdi.1023 > svr4.login:P 0:1(1) ack 1 win 4096 2 0.016497 (0.0165) svr4.login > bsdi.1023:P 1:2(1) ack 1 win 4096 3 0.139955 (0.1235) bsdi.1023 > svr4.login: . ack 2 win 4096 4 0.458037 (0.3181) bsdi.1023 > svr4.login:P 1:2(1) ack 2 win 4096 5 0.474386 (0.0163) svr4.login > bsdi.1023:P 2:3(1) ack 3 win 4096 6 0.539943 (0.0656) bsdi.1023 > svr4.login: . ack 3 win 4096

예제 (Cont’d) 7 0.814582 (0.2746) bsdi.1023 > svr4.login:P 2:3(1) ack 3 win 4096 8 0.831108 (0.0165) svr4.login > bsdi.1023:P 3:4(1) ack 3 win 4096 9 0.940112 (0.1090) bsdi.1023 > svr4.login: . ack 4 win 4096 10 1.191287 (0.2512) bsdi.1023 > svr4.login:P 3:4(1) ack 4 win 4096 11 1.207701 (0.0164) svr4.login > bsdi.1023:P 4:5(1) ack 4 win 4096 12 1.339994 (0.1323) bsdi.1023 > svr4.login: . ack 5 win 4096 13 1.680646 (0.3407) bsdi.1023 > svr4.login:P 4:5(1) ack 5 win 4096 14 1.697977 (0.0173) svr4.login > bsdi.1023:P 5:7(2) ack 5 win 4096 15 1.739974 (0.0420) bsdi.1023 > svr4.login: . ack 7 win 4096 16 1.799841 (0.0599) svr4.login > bsdi.1023:P 7:37(30) ack 5 win 4096 17 1.940176 (0.1403) bsdi.1023 > svr4.login: . ack 37 win 4096 18 1.944338 (0.0042) svr4.login > bsdi.1023:P 37:44(7) ack 5 win 4096 19 2.140110 (0.1958) bsdi.1023 > svr4.login: . ack 44 win 4096

19.3 지연된 확인응답 보통 TCP는 데이터를 받는 즉시 ACK를 보내지 않고, ACK를 지연시켜서 같은 방향으로 향하는 데이터와 함께 전송되도록 한다. bsdi.1023 Svr4.login PSH 0:1(1) ack 1(d) 0.0 0.016497 (0.0165) *0.139955 (0.1235) 0.458037 (0.3181) 0.474386 (0.0163) *0.539943 (0.0656) 0.814582 (0.2746) 0.831108 (0.0165) *0.940112 (0.1090) 1.191287 (0.2512) 1.20770 (0.0164) *1.339994 (0.1323) 1 PSH 1:2(1) ack 1 (echo of d) 2 지연된 ACK 3 ack 2 시간의 간격은 200ms의 배수 139.9 ms 539.9 ms 940.1ms 1339.9 ms 4 PSH 1:2(1) ack 2(a) PSH 2:3(1) ack 2 (echo of a) 5 지연된 ACK 6 ack 3 7 PSH 2:3(1) ack 3(t) PSH 3:4(1) ack 3 (echo of t) 8 지연된 ACK 9 ack 4 10 PSH 3:4(1) ack 4(e) PSH 4:5(1) ack 4 (echo of e) 11 지연된 ACK 12 ack 5

19.4 Nagle 알고리즘 발생배경 방법 장점 작은 패킷은 WAN에서는 혼잡에 영향을 줄 수 있다. 작은 양의 데이터가 TCP에 의해 모아져서 확인응답이 도착할 때에 보낸다. 장점 자기-클럭 조정(self-clocking) ACK가 빨리 돌아오면 데이터도 빨리 보내게 된다.

19.4 Nagle 알고리즘 (cont’d) slip과 vangogh.cs.berkeley.edu간에 rlogin을 이용한 데이터 흐름 PSH 5:6(1) ack 47, win 4096 PSH 47:48(1) ack 6, win 8192 PSH 6:7(1) ack 48, win 4096 PSH 48:49(1) ack 7, win 8192 PSH 7:9(2) ack 49, win 4095 PSH 49:51(2) ack 9, win 8192 Slip.0123 Vangogh.login 1 2 3 4 5 6 7 8 9 10 11 0.0 0.197694 (0.1977) 0.232457 (0.0348) 0.437593 (0.2051) 0.464257 (0.0267) 0.677658 (0.2134) 0.707709 (0.0301) 0.917762 (0.2101) 0.945862 (0.0281) 1.157640 (0.2118) 1.187501 (0.0299) 1.427852 (0.2404) 1.428025 (0.0002) 1.47191 (0.0292) 1.478429 (0.0212) 1.727608 (0.2492) 1.762913 (0.0353) 1.997900 (0.2350) PSH 9:10(1) ack 49, win 4094 PSH 51:52(1) ack10, win 8192 PSH 10:12(2) ack 52, win 4095 PSH 52:54(2) ack12, win 8192 PSH 12:14(2) ack 54, win 4094 Ack14, , win 8190 13 14 PSH 54:56(2) ack14, win 8192 PSH 14:17(3) ack 54, win 8192 12 15 PSH 17:18(1) ack 56, win 4096 PSH 56:59(3) ack18, win 8191 16 17 PSH 18:21(3) ack 59, win 4093 PSH 59:60(1) ack21, win 8189 18

19.4 Nagle 알고리즘 (cont’d) Nagle 알고리즘 기능 억제가 필요한 경우 마우스 이동 특수한 Function key를 입력한 경우 Function key는 보통 복수 바이트의 데이터 생성

예제 복수 바이트 데이터를 생성하는 문자를 눌렀을 때 Nagle 알고리즘의 관찰 F1 키를 누른다. 1 0.0 slip.1023 > vangogh.login: P 1:2(1) ack 2 2 0.250520 (0.2505) vangogh.login > slip.1023: P 2:4(2) ack 2 3 0.251709 (0.0012) slip.1023 > vangogh.login: P 2:4(2) ack 4 4 0.490344 (0.2386) vangogh.login > slip.1023: P 4:6(2) ack 4 5 0.588694 (0.0984) slip.1023 > vangogh.login: . ack 6 F2 키를 누른다. 6 2.836830 (2.2481) slip.1023 > vangogh.login: P 4:5(1) ack 6 7 3.132388 (0.2956) vangogh.login > slip.1023: P 6:8(2) ack 5 8 3.133573 (0.0012) slip.1023 > vangogh.login: P 5:7(2) ack 8 9 3.370346 (0.2368) vangogh.login > slip.1023: P 8:10(2) ack 7 10 3.388692 (0.0183) slip.1023 > vangogh.login : . ack 10

예제 (cont’d) Nagle 알고리즘의 타임 라인 PSH 1:2(1) ack 2 PSH 2:4(2) ack 2 Slip.1023 Vangogh.login PSH 1:2(1) ack 2 PSH 2:4(2) ack 2 PSH 2:4(2) ack 4 PSH 4:6(2) ack 4 ack 6 PSH 4:5(1) ack 6 PSH 6:8(2) ack 5 PSH 5:7(2) ack 8 PSH 8:10(2) ack 7 ack 10 1 2 3 4 5 6 7 8 9 10 F1키 누름 F2키 누름 0.0 0.250520 (0.2505) 0.251709 (0.0012) 0.490344 (0.2386) 0.588694 (0.0984) 2.836830 (2.2481) 3.3132388 (0.2956) 3.3133573 (0.0012) 3.370346 (0.2368) 3.388692 (0.0183) N [ ESC M [ ESC F2키 F1키 순서#: 6 5 4 3 2 1 ^ [ [ M ^ [ [ N F1 에코 F2 에코 2 3 4 5 6 7 8 9

예제 (cont’d) Nagle 알고리즘이 동작하지 않도록 수정된 예 F1 키를 누른다. 1 0.0 slip.1023 > vangogh.login: P 1:2(1) 2 0.002163 (0.0022) slip.1023 > vangogh.login: P 2:3(2) ack 2 3 0.004218 (0.0021) slip.1023 > vangogh.login: P 2:3(1) ack 2 4 0.280621 (0.2764) vangogh.login > slip.1023: P 5:6(1) ack 4 5 0.281738 (0.0011) slip.1023 > vangogh.login: . ack 2 6 2.477561 (2.1958) vangogh.login > slip.1023: P 2:6(4) ack 4 7 2.478735 (0.0012) slip.1023 > vangogh.login: . ack 6 F2 키를 누른다. 8 3.217023 (0.7383) slip.1023 > vangogh.login: P 4:5(1) ack 6 9 3.219165 (0.0021) slip.1023 > vangogh.login: P 5:6(1) ack 6 10 3.221688 (0.0025) slip.1023 > vangogh.login: P 6:7(1) ack 6 11 3.460626 (0.2389) vangogh.login > slip.1023: P 6:8(2) ack 5 12 3.489414 (0.0288) vangogh.login > slip.1023: P 8:10(2) ack 7 13 3.640356 (0.1509) slip.1023 > vangogh.login : . ack 10

예제 (cont’d) Nagle 알고리즘의 타임 라인 N [ ESC M [ ESC F2키 F1키 순서#: 6 5 4 3 2 1 Slip.1023 Vangogh.login 1 3 5 7 8 9 10 F1키 누름 F2키 누름 0.0 0.002163 (0.0022) 0.004218 (0.0021) 0.280621 (0.2764) 0.281738 (0.0011) 2.477561 (2.1958) 2.478735 (0.0012) 3.217023 (0.7383) 3.219165 (0.0021) 3.221688 (0.0025) 3.460626 (0.2389) 3.489414 (0.0288) 3.640356 (0.1509) PSH 1:2(1) ack 2 PSH 2:3(1) ack 2 PSH 3:4(1) ack 2 PSH 5:6(1) ack 4 PSH 2:5(3) ack 3 (LOST) ack 2 ack 6 PSH 4:5(1) ack 6 PSH 5:6(1) ack 6 PSH 6:7(1) ack 6 ack 10 PSH 6:8(2) ack 5 PSH 8:10(2) ack 7 2 4 6 11 12 13 N [ ESC M [ ESC F2키 F1키 순서#: 6 5 4 3 2 1 PSH 2:6(4) ack 4 ^ [ [ M ^ [ [ N F1 에코 F2 에코 2 3 4 5 6 7 8 9

19.5 윈도우 크기 정보 서버 클라이언트 보통 8,192 바이트의 윈도우 광고 19.5 윈도우 크기 정보 서버 보통 8,192 바이트의 윈도우 광고 서버가 클라이언트로부터 입력을 읽고, 그것을 에코할 때까지 서버의 TCP는 보낼 것이 아무 것도 없기 때문 클라이언트 ACK가 도착할 때에 보낼 데이터를 가지고 있다. ACK를 기다리는 수신 문자를 버퍼에 저장하고 있기 때문에, 윈도우 광고는 4,096보다 적게 든다.

19.6 요약 대화식 방식의 데이터 지연된 확인응답 Nagle 알고리즘 보통 1바이트 데이터가 클라이언트에서 서버로 전송 19.6 요약 대화식 방식의 데이터 보통 1바이트 데이터가 클라이언트에서 서버로 전송 지연된 확인응답 송신자에게 돌려줄 데이터를 확인응답에 편승해서 보내는 가를 알아보기 위해 사용 Nagle 알고리즘 비교적 저속의 WAN에서 작은 세그먼트 수를 줄이기 위해 사용