1 / 61

12.1 프로세스간 통신 12.2 TCP 서비스 12 .3 세그먼트 12 .4 옵션 12.5 검사합 12 .6 흐름 제어 12.7 오류 제어

제 12 장 전송 제어 프로토콜( TCP). 12.1 프로세스간 통신 12.2 TCP 서비스 12 .3 세그먼트 12 .4 옵션 12.5 검사합 12 .6 흐름 제어 12.7 오류 제어. 제 12 장 전송 제어 프로토콜( TCP)( 계속). 12.8 TCP 타이머 12.9 연결 12 .10 상태 천이 다이어그램 12 .11 혼잡 제어 12.12 TCP 동작 12 .13 TCP 설계 12.14 요약. TCP/IP 프로토콜 모음. 전송 계층( TCP) 이 제공하는 기능.

olin
Télécharger la présentation

12.1 프로세스간 통신 12.2 TCP 서비스 12 .3 세그먼트 12 .4 옵션 12.5 검사합 12 .6 흐름 제어 12.7 오류 제어

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 12 장 전송 제어 프로토콜(TCP) 12.1 프로세스간 통신 12.2 TCP 서비스 12.3 세그먼트 12.4 옵션 12.5 검사합 12.6 흐름 제어 12.7 오류 제어

  2. 제 12 장 전송 제어 프로토콜(TCP)(계속) 12.8 TCP 타이머 12.9 연결 12.10 상태 천이 다이어그램 12.11 혼잡 제어 12.12 TCP 동작 12.13 TCP 설계 12.14 요약

  3. TCP/IP 프로토콜 모음

  4. 전송 계층(TCP)이 제공하는 기능 • 프로세스간 통신 개설(포트 번호 이용) • 전송 단계에서 흐름 제어 메커니즘 제공(슬라이딩 윈도우 프로토콜 이용) • 전송 단계에서 오류 제어 메커니즘 제공(응답 패킷, 시간-초과, 재전송 방식 이용) • 연결 지향의 신뢰성 있는 프로토콜

  5. 12.1 프로세스간 통신

  6. 12.1 프로세스간 통신(계속) • 클라이언트/서버 통신에 필요한 사항 • 로컬 클라이언트 프로그램 • 원격 서버 프로그램 • 로컬 호스트 • 원격 호스트 포트번호 IP주소

  7. 12.1 프로세스간 통신(계속) • 포트 번호

  8. 12.1 프로세스간 통신(계속) • 잘 알려진(well-known) 포트 번호 Port Protocol ----- ----------- 7 Echo 9 Discard 11 Users 13 Daytime 17 Quote 19 Chargen 20 FTP, Data 21 FTP, Control

  9. 12.1 프로세스간 통신(계속) • 잘 알려진(well-known) 포트 번호(계속) Port Protocol ----- ----------- 23 TELNET 25 SMTP 53 DNS 67 BOOTP 79 Finger 80 HTTP 111 RPC

  10. 12.1 프로세스간 통신(계속) • 소켓 주소 • IP 주소와 포트 번호의 조합 • 종단간 연결 설정에 사용 • 클라이언트와 서버 소켓 주소 필요 • IP 헤더(IP 주소)와 TCP 헤더(포트 번호)에 들어있음

  11. 12.2 TCP 서비스 • 스트림 데이터 서비스 • 전이중 서비스 • 신뢰성 서비스

  12. 12.2 TCP 서비스(계속) • 스트림 데이터 서비스 • 송신 TCP • 송신 응용 프로그램으로부터 문자 스트림 수신(송신 버퍼 이용) • 적절한 크기인 세그먼트를 만들어 네트워크를 통하여 전송 • 수신 TCP • 세그먼트를 수신(수신 버퍼 이용) • 데이터를 추출하여 문자 스트림으로 수신 응용 프로그램에 전달

  13. 12.2 TCP 서비스(계속) • 전이중 서비스 • 동시에 양방향 전송 • 송신 데이터와 수신 데이터에 대한 확인 응답을 함께 보내는 피기백킹(piggybacking) • 신뢰성 서비스 • 확인 응답 메커니즘 이용

  14. 12.3 세그먼트 • TCP를 이용하여 두 개의 장치간에 전달되는 데이터 단위

  15. 12.3 세그먼트(계속) • 세그먼트 • 발신지 포트 번호(source port address) : 전송 호스트 응용 프로그램의 포트 번호 • 목적지 포트 번호(destination port address) : 수신 호스트 응용 프로그램의 포트 번호 • 순서 번호(sequence number) : 세그먼트에 포함된 데이터의 첫번째 바이트에 부여된 번호 • 확인 응답 번호(acknowledgement number) : 상대방 노드로부터 수신하고자 하는 바이트의 번호 • 헤더길이(header length) : TCP 헤더 길이의 4바이트 워드 값 • 제어(control) : 제어 또는 플래그

  16. 12.3 세그먼트(계속) • 제어 필드

  17. 12.3 세그먼트(계속) • 제어 필드의 플래그 종류 Flag Description ----- -------------- URG Urgent pointer field is valid ACK Acknowledgment field is valid PSH Push the data RST Connection must be reset SYN Synchronize sequence numbers FIN Terminate the connection

  18. 12.3 세그먼트(계속) • 세그먼트(계속) • 윈도우 크기(window size) : 상대방이 유지해야 하는 바이트 단위의 윈도우 크기 • 검사합(checksum) : 오류 제어 • 긴급 포인터(urgent pointer) : 긴급 데이터 • 옵션(option) : 옵션 정보

  19. 12.4 옵션(option) • 최대 40 바이트

  20. 12.4 옵션(option)(계속) • 옵션-끝(end of option) • 맨 끝에 패딩을 위해 사용되는 한 바이트 옵션

  21. 12.4 옵션(option)(계속) • 무 동작(no operation) • 채우기(filler)로 사용되는 한 바이트 옵션

  22. 12.4 옵션(option)(계속) • 최대 세그먼트 크기(maximum segment size : MSS) • 목적지에서 수신할 수 있는 데이터 세그먼트의 최대 크기 • 연결 설정 단계 중에 목적지에 의해 결정

  23. 12.4 옵션(option)(계속) • 윈도우 확장 인자 • 윈도우 크기를 증가시키기 위해 사용 • 새로운 윈도우 크기 = 헤더에서 정의된 윈도우 크기 * 2윈도우 확장인자 • 최대 설정 값 : 16 • 최대 윈도우 크기 : 216 * 216 = 232(순서번호 값과 동일)

  24. 12.4 옵션(option)(계속) • 타임스탬프(timestamp) • 10바이트 길이 옵션 • 왕복 시간(round-trip time) 계산에 사용

  25. 12.5 검사합 • UDP와 동일하며 필수 사항(mandatory) • 의사 헤더(pseudoheader)를 세그먼트에 추가 • 프로토콜의 값 : 6

  26. 12.6 흐름 제어(flow control) • 목적지로부터 확인 응답을 수신하기 전에 발신지가 전송할 수 있는 데이터 양 정의 • 적용 방법 : 슬라이딩 윈도우 프로토콜(sliding window protocol) • 슬라이딩 윈도우 예(고정 크기)

  27. 12.6 흐름 제어(flow control)(계속) • 포인터를 이용한 슬라이딩 윈도우

  28. 12.6 흐름 제어(flow control)(계속) • 윈도우 크기 증가 • 확인 응답 세그먼트 이용

  29. 12.6 흐름 제어(flow control)(계속) • 윈도우 크기 감소

  30. 12.6 흐름 제어(flow control)(계속) • 윈도우 관리 • 목적지에서 증가 또는 감소

  31. 12.6 흐름 제어(flow control)(계속) • silly 윈도우 신드롬 • 전송/수신 응용 프로그램이 데이터를 천천히 생성하거나 천천히 처리할 때 발생 • 예 : 1 바이트 데이터 + 20 바이트 TCP 헤더 + 20 바이트 IP 헤더 • 송신측에서 발생하는 신드롬 • 가능한 한 바이트 데이터를 전송하지 못하게 함 • 데이터를 취합하여 큰 블록 데이터로 만들어 전송 • Nagle 알고리즘 적용 : 송신 TCP에서 실행하는 알고리즘

  32. 12.6 흐름 제어(flow control)(계속) • 수신측에서 발생하는 신드롬 • silly 윈도우 신드롬이 발생하는 상황에서 한 바이트 수신 처리 후에 윈도우 크기를 통보하게 되는 경우 • Clark 해결 방법 : 충분한 공간이 생기거나 적어도 버퍼가 반 이상 비어있을 때까지 윈도우 크기를 0 으로 통일 • 확인 응답 송신 지연 : 수신 버퍼가 충분한 공간이 생길 때까지 확인 응답 보류

  33. 12.7 오류 제어 • 오류 감지 메커니즘 • 훼손 세그먼트 • 손실 세그먼트 • 순서가 어긋난 세그먼트 • 중복 세그먼트 • 오류 정정 메커니즘

  34. 12.7 오류 제어(계속) • 오류 발견과 정정 • 오류 발견 도구 : 검사합, 확인응답, 시간-초과 • 세그먼트의 검사합 필드 이용 훼손 여부 확인 • 수신을 송신측에 알려주는 확인응답 이용 • 시간-초과 전까지 확인응답 되지 않으면 훼손 또는 손실 간주 • 오류 정정 : 시간-초과 카운터 이용 - 재전송

  35. 12.7 오류 제어(계속) • 훼손 세그먼트

  36. 12.7 오류 제어(계속) • 손실 세그먼트

  37. 12.7 오류 제어(계속) • 확인응답 손실

  38. 12.7 오류 제어(계속) • 중복 세그먼트 • 시간-초과 이전에 확인응답이 도착하지 않는 송신 • 같은 순서번호를 가진 세그먼트는 폐기 • 순서가 잘못된 세그먼트 • 데이터그램의 서로 다른 경로를 통한 전달로 인하여 발생 • 이전의 세그먼트로 모두 수신하기까지 확인응답을 전송하지 않음 • 시간-초과가 발생하면 세그먼트가 재전송 됨

  39. 12.8 TCP 타이머 • TCP 타이머 종류

  40. 12.8 TCP 타이머(계속) • 재전송 타이머(retransmission timer) • 재전송 시간 : 세그먼트 전송 후 확인응답을 기다리는 시간 • 타이머가 끝나기 전 확인응답이 수신되며 타이머 소멸 • 확인응답이 수신되기 전 타이머가 종료되면 해당 세그먼트는 재전송되고 타이머 초기화 • 재전송 시간 = 2 * RTT(round-trip time)

  41. 12.8 TCP 타이머(계속) • Karn 알고리즘 • 전송된 세그먼트에 대해 확인 응답되지 않아 재전송된 경우 • 이전 세그먼트에 대한 확인응답인지 재전송에 대한 확인응답인지 여부 판단이 애매하다 • RTT 값은 재전송 없이 확인응답 수신 전까지 변동이 없음 • 영속 타이머(persistence timer) • 윈도우 크기가 0 인 경우를 처리하기 위한 타이머 • 수신 TCP가 윈도우 크기 0 을 통보했는데, 송신 TCP가 이에 대한 확인응답을 보냈지만 수신 TCP가 이를 수신하지 못함 • 양쪽 TCP가 서로 기대되는 교착상태(deadlock) 해결

  42. 12.8 TCP 타이머(계속) • Keepalive 타이머 • 두 TCP 간에 설정된 연결이 오랫동안 휴지(idle) 상태에 있는 것을 방지하기 위한 타이머 • 시간-종료 : 2 시간 • 2 시간이 지나도록 세그먼트를 수신하지 못하면 75초 간격으로 10 개의 프루브(probe) 전송 • 응답이 없으면 다운으로 간주하고 연결 종료 • 시간-대기 타이머(time-waited timer) • 연결 종료 동안에 사용

  43. 12.9 연결 • TCP : 연결-지향 프로토콜 • 발신지와 목적지 간에 가상 경로 설정 • 연결 설정과 연결 종료를 통하여 이루어짐

  44. 12.9 연결(계속) • 연결 설정 • 4 단계 수행 • 호스트 A는 호스트 B에게 연결 설정 세그먼트를 전송(초기화 정보) • 호스트 B는 호스트 A에게 확인응답 세그먼트 전송 • 호스트 B는 호스트 A에게 초기화 정보 세그먼트 전송 • 호스트 A는 호스트 B에게 확인응답 세그먼트 전송

  45. 12.9 연결(계속) • 3 단계 핸드쉐이크(three-wayhandshaking

  46. 12.9 연결(계속) • 연결 종료 • 호스트 A는 연결 종료를 알리고 세그먼트 전송 • 호스트 B는 A의 요구에 대해 확인 응답하는 세그먼트 전송 • 호스트 B는 연결 종료를 알리는 세그먼트 전송 • 호스트 A는 B의 요구에 대해 확인응답

  47. 12.9 연결(계속) • 4 단계 핸드쉐이크(four-wayhandshaking)

  48. 12.10 상대 천이 다이어그램 • 유한 상태 기기(finite state machine) 이용 구현 • TCP 상태 State Description ----- -------------- CLOSED There is no connection LISTEN The server is waiting for calls from the client SYN-SENT A connection request is sent; waiting for acknowledgment SYN-RCVD A connection request is received ESTABLISHED Connection is established FIN-WAIT-1 The application has requested the closing of the connection FIN-WAIT-2 The other side has accepted the closing of the connection CLOSING Both sides have decided to close simultaneously TIME-WAIT Waiting for retransmitted segments to die CLOSE-WAIT The server is waiting for the application to close LAST-ACK The server is waiting for the last acknowledgment

  49. 12.10 상대 천이 다이어그램(계속) • 상대 천이 다이어그램

  50. 12.10 상대 천이 다이어그램(계속) • 상태 천이 다이어그램 • 상태(state) : 타원형 • 한 상태에서 다른 상태로의 천이 : 지시선 • 사선으로 나누어지는 두 개의 문자열 • 첫번째 열 : TCP가 수신하는 입력 • 두번째 열 : TCP가 전송하는 출력 • 점선 : 서버 • 실선 : 클라이언트 • 가는선 : 비 정상적인 상황

More Related