1 / 91

Chapter 12

Chapter 12. Transmission Control Protocol (TCP). CONTENTS. PROCESS-TO-PROCESS COMMUNICATION TCP SERVICES NUMBERING BYTES FLOW CONTROL SILLY WINDOW SYNDROME ERROR CONTROL TCP TIMERS. CONTENTS (continued). CONGESTION CONTROL SEGMENT OPTIONS CHECKSUM

samuru
Download Presentation

Chapter 12

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. Chapter 12 Transmission Control Protocol (TCP)

  2. CONTENTS PROCESS-TO-PROCESS COMMUNICATION TCP SERVICES NUMBERING BYTES FLOW CONTROL SILLY WINDOW SYNDROME ERROR CONTROL TCP TIMERS

  3. CONTENTS (continued) CONGESTION CONTROL SEGMENT OPTIONS CHECKSUM CONNECTION STATE TRANSITION DIAGRAM TCP OERATION TCP PACKAGE

  4. TCP/IP 프로토콜에서 TCP의 위치

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

  6. 12.1 PROCESS TO PROCESS COMMUNICATION

  7. 12.1 프로세스간 통신 • TCP-대-IP

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

  9. 12.1 프로세스간 통신 • 포트 번호

  10. 12.1 프로세스간 통신 • TCP에서 사용되는 잘 알려진 포트

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

  12. 12.2 TCP SERVICES

  13. 12.2 TCP 서비스 • 스트림 배달 서비스 • 전이중 서비스 • 연결 지향 서비스 • 신뢰성 서비스

  14. 12.2 TCP 서비스 • 스트림 배달

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

  16. 12.2 TCP 서비스 • 송신 버퍼와 수신 버퍼

  17. 12.2 TCP 서비스 • TCP 세그먼트

  18. 12.2 TCP 서비스 • 전이중 서비스 • 동시에 양방향 전송 • 송신 데이터와 수신 데이터에 대한 확인 응답을 함께 보내는 피기백킹(piggybacking) • 연결-지향 서비스 • TCP는 연결지향 프로토콜 • 물리적 연결이 아닌 가상의 연결 • 요청→승인 → 데이터 교환 → 해제 순으로 진행 • 신뢰성 서비스 • 확인 응답 메커니즘 이용

  19. 12.3 NUMBERING BYTES

  20. 12.3 바이트 순서 각 방향으로 전송되는 바이트는 TCP에 의해서 번호가 매겨진다. 번호는 임의의 값에서 시작한다.

  21. 12.3 바이트 순서 Example 1 TCP 연결이 6,000 바이트의 파일을 전송한다고 가정해보자. 첫 번째 바이트는 10010 번호를 가지고 있다. 만일 처음 네 개의 세그먼트는 1,000 바이트를 운반하고 마지막 세그먼트는 2,000 바이트를 운반하는 다섯 개의 세그먼트로 데이터가 전송된다면, 각 세그먼트의 순서 번호는 어떻게 되는가?

  22. 12.3 바이트 순서 Solution 다음은 각 세그먼트의 순서 번호를 보여준다. 세그먼트 1 순서번호 10,010 (범위 : 10,010 에서 11,009) 세그먼트 2 순서번호 11,010 (범위 : 11,010 에서 12,009) 세그먼트 3  순서번호 12,010 (범위 : 12,010 에서 13,009) 세그먼트 4  순서번호 13,010 (범위 : 13,010 에서 14,009) 세그먼트 5 순서번호 14,010 (범위 : 14,010 에서 16,009)

  23. 12.3 바이트 순서 • 순서번호 • 확인응답번호 세그먼트 내의 순서번호 필드의 값은 그 세그먼트에 포함되는 첫 번째 데이터 바이트의 번호를 나타낸다. 세그먼트 내의 확인응답 번호의 값은 수신하기를 기대하는 다음 바이트의 번호를 나타낸다. 확인응답 번호는 누적된다.

  24. 12.4 FLOW CONTROL

  25. 12.4 흐름제어 • 슬라이딩 윈도우 프로토콜 슬라이딩 윈도우는 좀 더 효율적으로 전송을 하고 또한 목적지에서 데이터가 넘치지 않도록 데이터의 흐름을 조절하기 위하여 사용된다. TCP 슬라이딩 윈도우는 바이트 단위이다.

  26. 12.4 흐름제어 • 송신자 버퍼

  27. 12.4 흐름제어 • 수신자 버퍼

  28. 12.4 흐름제어 • 송신자 버퍼와 송신자 윈도우

  29. 12.4 흐름제어 • 송신자 윈도우 슬라이딩

  30. 12.4 흐름제어 • 송신자 윈도우 확장 • 수신 프로세스가 수신속도보다 빠르게 데이터를 처리

  31. 12.4 흐름제어 • 송신자 윈도우 수축(Shrinking) • 수신 프로세스가 수신 속도보다 느리게 데이터 처리

  32. 12.4 흐름제어 TCP에서 송신윈도우 크기는 전적으로 수신윈도우의 크기(수신 버퍼에 있는 빈 공간의 수)로 조절된다. 그렇지만, 실제의 윈도우의 크기는 망에 혼잡현상이 발생하면 더 작아질 수 있다.

  33. 12.4 흐름제어 TCP의 슬라이딩 윈도우에 대한 사항 1. 발신지는 전체 윈도우 크기에 해당하는 데이터를 전송할 필요는 없다. 2. 윈도우 크기는 목적지에 의해서 증가되거나 감소한다. 3. 목적지는 언제든지 확인 세그먼트를 전송 할 수 있다.

  34. 12.5 SILLY WINDOW SYNDROME

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

  36. 12.5 silly 윈도우 신드롬 • Nagle 알고리즘 • 송신 TCP는 응용 프로그램으로부터 수신한 첫 데이터를 세그먼트로 만들어 전송한다. • 첫 번째 세그먼트를 전송한 후 송신 TCP는 수신 TCP로부터 확인 응답을 수신하거나 최대 크기의 세그먼트를 구성할 정도로 데이터가 출력버퍼에 저장되면 세그먼트를 전송한다. • 2번째 단계를 계속 반복한다.

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

  38. 12.6 ERROR CONTROL

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

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

  41. 12.6 오류 제어 • 훼손 세그먼트

  42. 12.6 오류 제어 • 손실 세그먼트

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

  44. 12.6 오류 제어 • 확인응답 손실

  45. 12.7 TCP TIMERS

  46. 12.7 TCP 타이머 • TCP 타이머

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

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

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

  50. 12.8 CONGESTION CONTROL

More Related