3 장. 트랜스포트계층 (Transport Layer) 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 강의목표 트랜스포트계층서비스의원리 다중화 / 역다중화 (multiplexing/demultiplexing) 신뢰적인데이터전달 (reliable data transfer) 흐름제어 (flow control) 혼잡제어 (congestion control) 인터넷에서의트랜스포트계층학습 UDP: 비연결형트랜스포트 (connectionless transport) TCP: 연결지향형트랜스포트 (connection-oriented transport) TCP 혼잡제어 순천향대학교컴퓨터공학과 2
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 3 트랜스포트서비스와프로토콜 서로다른호스트에서동작하는애플리케이션프로세스간의논리적통신 (logical communication) 을제공 트랜스포트프로토콜은종단시스템에서구현 송신측애플리케이션메시지를세그먼트 (segment) 로분할하여네트워크계층에전달 수신측세그먼트를메시지로결합하여애플리케이션계층에전달 애플리케이션에하나이상의트랜스포트프로토콜 인터넷 : TCP와 UDP 순천향대학교컴퓨터공학과 4
트랜스포트와네트워크계층 네트워크계층 호스트들사이의논리적통신을제공 트랜스포트계층 프로세스들사이의논리적통신을제공 네트워크계층서비스에의존 집안비유 : 두집안의사촌지간아이들 ( 앤, 빌 ) 간의편지배달 호스트 ( 종단시스템 ) = 집 프로세스 = 사촌형제 애플리케이션메시지 = 봉투안의편지 트랜스포트프로토콜 = 앤과빌 네트워크계층프로토콜 = 우편서비스 순천향대학교컴퓨터공학과 5 인터넷트랜스포트프로토콜계층 신뢰적, 순서적인데이터전달 : TCP 혼잡제어 흐름제어 연결설정 비신뢰적, 비순서적인데이터전달 : UDP IP 와같은최선형전달서비스 (besteffort delivery service) 제공되지않는서비스 지연보장 대역폭보장 순천향대학교컴퓨터공학과 6
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 7 다중화 / 역다중화 (Multiplexing/Demultiplexing) 송신호스트다중화 : 소켓들로부터데이터를모으고, 트랜스포트헤더를추가 ( 나중에역다중화에서사용 ) 수신호스트역다중화 : 헤더정보를사용하여수신된세그먼트들을올바른소켓에전달 순천향대학교컴퓨터공학과 8
역다중화 (demultiplexing) 동작 호스트는 IP 데이터그램을수신 데이터그램은출발지 ( 소스 ) IP 주소, 목적지 IP 주소를가짐 데이터그램은한개의트랜스포트계층세그먼트를가짐 세그먼트는출발지, 목적지포트번호를가짐 호스트는 IP 주소와포트번호를사용하여세그먼트를해당소켓에전달 순천향대학교컴퓨터공학과 9 비연결형역다중화 (Connectionless Demultipexing) 포트번호를갖는소켓을생성 DatagramSocket mysocket1 = new DatagramSocket(12534); UDP 소켓으로송신하는데이터그램에는다음을기술해야함 목적지 IP 주소, 목적지포트번호 호스트가 UDP 세그먼트수신시 : 세그먼트내의목적지포트번호를조사 해당포트번호를갖는소켓에 UDP 세그먼트를전달 IP 데이터그램들의출발지 IP 주소또는출발지포트번호가다르더라도모두동일한목적지 IP 주소와목적지포트번호를가지면같은소켓에전달 순천향대학교컴퓨터공학과 10
비연결형다중화 / 역다중화예 순천향대학교컴퓨터공학과 11 연결지향형역다중화 (Connection-Oriented Demux) TCP 소켓은 4 개요소로구분 출발지 IP 주소, 출발지포트번호 목적지 IP 주소, 목적지포트번호 수신측호스트는 4 개의값을사용하여해당소켓으로세그먼트를전달 서버호스트는동시에많은 TCP 소켓들을지원할수있음 각소켓들은자신의 4 개요소로구분 웹서버는연결되는각클라이언트마다다른소켓들을가짐 비지속 HTTP 는각요청에대해서다른소켓을가짐 순천향대학교컴퓨터공학과 12
연결지향형역다중화예 (1) 순천향대학교컴퓨터공학과 13 연결지향형역다중화예 (2) 순천향대학교컴퓨터공학과 14
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 15 UDP (User Datagram Protocol) [RFC 768] IP 에최소기능만추가 다중화 / 역다중화 오류검사 최선형 (best effort) 서비스의 UDP 세그먼트 : 손실 순서에어긋나게애플리케이션에전달 비연결형 (connectionless) UDP 송수신측간연결을위해핸드셰이크를사용하지않음 UDP 세그먼트들은서로무관하게독립적으로다루어짐 순천향대학교컴퓨터공학과 16 UDP 사용 스트리밍멀티미디어응용 손실감내, 속도 ( 전송률 ) 민감 DNS SNMP (Simple Network Management Protocol) UDP 상에서신뢰적인전송 애플리케이션계층에서신뢰성추가 애플리케이션의존에러복구
UDP 세그먼트헤더 UDP 를사용하는이유는? 지연을유발하는연결설정이없음 단순하여송수신측에서연결상태가없음 간소한세그먼트헤더로인한작은패킷오버헤드 혼잡제어를하지않아서원하는만큼빨리전달 순천향대학교컴퓨터공학과 17 UDP 체크섬 (UDP Checksum) 체크섬은전송된세그먼트의오류를검출 송신측 : 수신측 : 헤더를포함한세그먼트의값을 16비트정수의열로간주 체크섬 : 세그먼트값들을더한값의 1의보수 체크섬값을 UDP 체크섬필드에삽입 수신된세그먼트의체크섬값을계산 계산된체크섬값이체크섬필드값과같은지를비교 같으면에러없음 다르면에러 순천향대학교컴퓨터공학과 18
인터넷체크섬예 정수값덧셈시 1 의보수덧셈은최상위비트에서캐리가발생하면결과값에더함 두 16 비트덧셈예 순천향대학교컴퓨터공학과 19 3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 20
신뢰성있는데이터전송의원리 (Principles of Reliable Data Transfer) 신뢰성있는데이터전송구현 트랜스포트, 링크, 애플리케이션계층모두에중요한문제 네트워킹에서상위 10 개 (top-10) 안에드는중요한이슈 비신뢰적인채널 (unreliable channel) 의특성에따라신뢰적인데이터전송 (reliable data transfer, rdt) 프로토콜의복잡도결정 순천향대학교컴퓨터공학과 21 신뢰적인데이터전송프로토콜인터페이스 rdt_send(): 상위계층 (e.g. app) 에서호출. 수신측의상위계층으로전송할데이터를전달 deliver_data(): rdt 가호출하여상위계층에데이터전달을 send side receive side udt_send(): rdt 가호출. 비신뢰적인채널을통해패킷을수신측에전송 rdt_rcv(): 패킷이채널의수신측에도착하였을때호출 순천향대학교컴퓨터공학과 22
신뢰적인데이터전송프로토콜구축 이절에서는 rdt 의송신, 수신측의개발을단계적으로소개 단방향데이터전송 (unidirectional data transfer) 만고려 제어패킷은양방향으로전송 송신자, 수신자동작정의를위해 FSM(finite state machine, 유한상태머신 ) 을사용 상태변화를일으키는이벤트 (event) 이벤트가발생했을때취해지는행동 (action) 상태 1 이벤트 상태 2 행동 순천향대학교컴퓨터공학과 23 rdt 1.0 - 신뢰적인채널상의신뢰적인전송 (Reliable Transfer over Reliable Channel) 하위채널이완전히신뢰적 비트오류없음 패킷손실없음 송신자, 수신자에대한분리된 FSM 송신자는하위채널에데이터전송 수신자는하위채널로부터데이터를읽음 순천향대학교컴퓨터공학과 24
rdt 2.0 - 비트오류가있는채널 하위채널에서비트오류발생가능 체크섬사용하여비트오류검출 오류복구 (recover from error) ACK (acknowledgement) 수신된패킷이오류가없음을수신자가송신자에게알림 NAK (negative acknowledgement) 수신된패킷이오류가있음을수신자가송신자에게알림 송신자가 NAK를수신하면패킷을재전송 rdt 2.0 의추가기능 오류검출 수신자피드백 (feedback) 수신자에서송신자로제어메시지 (ACK, NAK) 전달 순천향대학교컴퓨터공학과 25 rdt 2.0 - FSM 동작정의 전송후대기 (stop and wait) 송신자가패킷을보낸후수신자의응답을기다림 순천향대학교컴퓨터공학과 26
rdt 2.0 - 오류가없는동작 rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above Wait for ACK or NAK rdt_rcv(rcvpkt) && isack(rcvpkt) rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpk t) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 순천향대학교컴퓨터공학과 27 rdt 2.0 - 오류시나리오 rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpk t) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 순천향대학교컴퓨터공학과 28
rdt 2.0 문제점 ACK/NAK 패킷의오류 (corrupt) 가능성고려하지않음 ACK/NAK 패킷에도체크섬비트추가 ACK/NAK 오류시송신자는수신자에게일어난상황을알수없음 ACK/NAK 오류시단순히재전송하면중복패킷 (duplicate packet) 발생가능 중복패킷해결책 송신자는 ACK/NAK 오류시현재패킷을재전송 송신자는각패킷에순서번호 (sequence number) 추가 수신자는순서번호를조사하여중복패킷이면버림 (discard) 순천향대학교컴퓨터공학과 29 rdt 2.1 - 송신자, ACK/NAK 오류고려 순천향대학교컴퓨터공학과 30
rdt 2.1 - 수신자, ACK/NAK 오류고려 순천향대학교컴퓨터공학과 31 rdt 2.1 개요 송신자 (sender) 패킷에순서번호추가 (0,1) 두개의순서번호사용 수신된 ACK/NAK의오류여부조사 rdt 2.0 보다상태수가 2배 현재패킷이순서 0 또는 1인지를상태로기억 수신자 (receiver) 수신된패킷이중복되었는지조사 올바르게수신될패킷의순서번호가 0 또는 1 인지를상태가표시 수신자는마지막으로보낸 ACK/NAK 가송신자측에서제대로받았는지알지못함 순천향대학교컴퓨터공학과 32
rdt 2.2 - NAK 없는프로토콜 (NAK-free Protocol) NAK 없이 ACK 만사용한다는점만제외하고 rdt 2.1 의기능과같음 수신자는 NAK 대신마지막에올바르게수신된패킷에대한 ACK 를보냄 수신자는 ACK 패킷에순서번호를명시해야함 송신자측에서중복된 ACK 를받으면 NAK 와같은동작을수행 현재패킷을재전송 순천향대학교컴퓨터공학과 33 rdt 2.2 - 송신자, 수신자동작일부 순천향대학교컴퓨터공학과 34
rdt 3.0 - 오류와손실이있는채널 하위채널에서의패킷들 ( 데이터, ACK) 의손실 (packet loss) 을고려 체크섬, 순서번호, 재전송은도움은되지만근본적인해결에는충분하지못함 해결책 송신자가충분한시간동안 ACK 수신을기다림 지정된시간동안 ACK 를받지못하면재전송 패킷 ( 또는 ACK) 가손실이아니고지연된경우라면 : 재전송은중복패킷이되지만이미순서번호를사용하여이를해결 수신자는 ACK 패킷의순서번호를명시해야함 카운트다운타이머 (countdown timer) 필요함 순천향대학교컴퓨터공학과 35 rdt 3.0 - 송신자 순천향대학교컴퓨터공학과 36
rdt 3.0 동작 (1) 순천향대학교컴퓨터공학과 37 rdt 3.0 동작 (2) 순천향대학교컴퓨터공학과 38
rdt 3.0 성능 (1) rdt 3.0 은기능적으로잘동작하나성능은만족스럽지못함 전송후대기프로토콜 예 1 Gbps 전송률 (R) 을가진링크, 왕복전파지연 (RTT) 이 30 밀리초, 데이터패킷크기 (L) 가 8000 비트 (1 KB) 한데이터패킷을전송시간 수신자측에데이터패킷이도착하는시간 t = RTT / 2 + L / R = 15.008 밀리초 송신자측에 ACK 패킷이도착하는시간 t = RTT + L / R = 30.008 밀리초 순천향대학교컴퓨터공학과 39 rdt 3.0 성능 (2) 송신자이용률 U sender : 분주하게비트를전송하는데걸린시간 U sender = L / R RTT + L / R =.008 30.008 = 0.00027 송신자는 30.008ms 동안 1000 바이트만송신 => 1 Gbps 링크에서 267 kbps 처리율 네트워크프로토콜이물리자원의사용을제한!!!! 순천향대학교컴퓨터공학과 40
rdt 3.0 - 전송후대기 (Stop-and-Wait) 동작 순천향대학교컴퓨터공학과 41 과제 연습문제 P9 P9. rdt 3.0 에서송신된데이터패킷이오류발생한경우와수신측에서보낸확인응답이오류발생한경우각각에대한타이밍다이어그램 교재 : 뒤섞여있을때 -> 오류가발생했을때 순천향대학교컴퓨터공학과 42
파이프라인프로토콜 (Pipelined Protocol) 파이프라이닝 (pipelining) 송신자가 ACK 응답을기다리지않고여러패킷을전송 순서번호의범위는증가하여전송중인패킷은유일한순서번호를가짐 송신측과수신측이패킷을버퍼링해야함 GBN(Go-Back-N) 과 SR(Selective Repeat, 선택적반복 ) 두종류의기본적인파이프라인프로토콜 순천향대학교컴퓨터공학과 43 파이프라이닝 - 향상된이용율 순천향대학교컴퓨터공학과 44
파이프라이닝프로토콜개요 GBN(Go-Back-N) 프로토콜 송신자는파이프라인에서최대 N 개의 ACK 없이패킷전송허용 수신자는누적된 ACK(cumulative ACK) 만을전송 수신된패킷들의순서번호에갭이있으면 ACK 응답하지않음 송신자는가장오래된 전송되었지만 ACK 응답없는패킷 에대한타이머를가짐 타이머가만료되면 ACK 응답없는모든패킷들을재전송 선택적반복 (Selective Repeat) 프로토콜 송신자는파이프라인에서최대 N 개의 ACK 없이패킷전송허용 수신자는개별패킷들에대해 ACK 응답 송신자는 전송되었지만 ACK 응답없는패킷 들각각에대해개별타이머를관리 타이머만료시 ACK 응답없는패킷만재전송 순천향대학교컴퓨터공학과 45 송신자 패킷헤더에 k 비트순서번호 (seq #) GBN (Go-Back-N) - 송신자 크기 N 인윈도우 (window) ACK 응답을받지않은연속적인 N 개의패킷버퍼링 슬라이딩윈도우 (sliding-window ) ACK(n): 누적 ACK (cumulative ACK) 순서번호 n 을포함하여 ACK 응답을받은모든패킷들 가장오래된 ACK 응답없는패킷에타이머 timeout(n): 윈도우에있는패킷 n과더큰순서번호의모든패킷들을재전송 순천향대학교컴퓨터공학과 46
GBN - 송신자의확장된 FSM 순천향대학교컴퓨터공학과 47 GBN - 수신자의확장된 FSM ACK-only 가장큰순차 (in-order) 순서번호를갖는패킷을올바르게받았으면항상 ACK 를보냄 중복된 ACK 를생성할수있음 expectedseqnum 값만기억 비순차 (out-of-order) 패킷 폐기 (discard): 버퍼링하지않음 순천향대학교컴퓨터공학과 48
GBN 동작예 순천향대학교컴퓨터공학과 49 선택적반복 (Selective Repeat, SR) 수신자는올바르게수신된모든패킷들에대해개별적으로확인응답 상위계층에순차적 (in-order) 으로전달하기위해비순차 (out-oforder) 패킷들을버퍼링 송신자는 ACK 응답을받지못한패킷들을재전송 ACK 응답을받지못한각패킷에대해타이머관리 송신자윈도우 N 개의연속적인순서번호 GBN 과마찬가지로윈도우크기 N 은아직확인응답 (ACK) 안된패킷들의수를제한 순천향대학교컴퓨터공학과 50
선택적반복 - 송신자, 수신자윈도 순천향대학교컴퓨터공학과 51 선택적반복 - 이벤트와행동 송신자 상위에서데이터받음 : 윈도우내에가용한다음순서번호의패킷이있으면송신 timeout(n): 패킷 n을재전송, 타이머재시작 ACK(n) in [sendbase,sendbase+n-1]: 패킷 n을수신된것으로표시 n이가장작은순서번호의패킷이면윈도우 base를다음미확인응답순서번호로이동 수신자 pkt n in [rcvbase, rcvbase+n-1] ACK(n) 을보냄 비순차패킷 : 버퍼에저장 순차패킷 : ( 버퍼에저장된이전패킷들과함께 ) 상위계층에전달, 윈도우를아직받지못한패킷으로이동 pkt n in [rcvbase-n,rcvbase-1] ACK(n) 을보냄 otherwise: 무시 순천향대학교컴퓨터공학과 52
SR 동작예 순천향대학교컴퓨터공학과 53 선택적반복문제점 순서번호의크기가한정되었을때송수신윈도우동기화시문제발생 예 순서번호 : 0, 1, 2, 3 윈도우크기 3 수신자는 (a), (b) 두시나리오가동일하게간주 수신자는처음보낸패킷 0의재전송과다섯번째패킷0를구별못함 최소한의윈도우크기는? 윈도우크기가 SR 프로토콜의순서번호공간크기의절반보다작거나같아야함 순천향대학교컴퓨터공학과 54
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 55 TCP - 개요 (Overview) (1) RFCs: 793, 1122, 1323, 2018, 2581 점대점 (point-to-point) 단일송신자, 단일수신자 신뢰적인, 순차바이트스트림 (reliable, in-order byte stream) 파이프라인 TCP 혼잡및흐름제어가윈도우크기결정 송신버퍼, 수신버퍼 socket door application writes data TCP send buffer application reads data TCP receive buffer socket door segment 순천향대학교컴퓨터공학과 56
TCP - 개요 (2) 전이중데이터 (full duplex data) 같은연결상에서양방향데이터흐름 최대세그먼트크기 (MSS: maximum segment size) 연결지향형 (connection-oriented) 데이터교환전에송신자, 수신자의상태를초기화하는핸드셰이킹 (handshaking, 제어메시지들의교환 ) 흐름제어 (flow control) 송신자는수신자를수신한계를넘어서는송신을하지않음 순천향대학교컴퓨터공학과 57 TCP 세그먼트구조 (TCP Segment Structure) 순천향대학교컴퓨터공학과 58
TCP 순서번호와 ACK 순서번호 (seq. #) 세그먼트에서첫번째바이트의바이트스트림번호 시작순서번호는임의로선택 ACK 번호 상대방으로부터기대하는다음바이트의순서번호 누적 ACK (cumulative ACK) 비순차세그먼트수신 TCP 에서규칙을제공하지않고개발자에일임 순천향대학교컴퓨터공학과 59 TCP 순서번호와 ACK 예 순천향대학교컴퓨터공학과 60
TCP 왕복시간과타임아웃 (TCP Round Trip Time(RTT) and Timeout) TCP 는앞절의 rdt 처럼손실세그먼트발견을위해타임아웃 / 재전송메커니즘사용 타임아웃주기 왕복시간 (RTT) 보다커야함 너무짧은타임아웃 불필요한재전송발생 너무긴타임아웃 세그먼트손실에대한대응이느려짐 왕복시간을어떻게예측하는가? 순천향대학교컴퓨터공학과 61 TCP 왕복시간과타임아웃 - 왕복시간예측 SampleRTT 측정 샘플세그먼트가송신된시간부터 ACK 를받기까지측정된시간 재전송한세그먼트는무시 SampleRTT 값은네트워크부하에따라서가변적 현재 SampleRTT 값이아닌최근의값들의평균값으로추정 TCP 는아래식을사용하여추정 (EstimatedRTT) EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT 지수적가중이동평균 (EWMA, Exponential Weighted Moving Average) 과거샘플들의영향이지수적으로감소 일반적으로 = 0.125 (1/8) 순천향대학교컴퓨터공학과 62
TCP 왕복시간과타임아웃 - 왕복시간예측예 순천향대학교컴퓨터공학과 63 TCP 왕복시간과타임아웃 - 타임아웃값설정 타임아웃주기 (TimeoutInterval) 왕복시간예측값 (EstimatedRTT) + 여유값 (safety margin) EstimatedRTT 값의변화가크면여유값도크게설정 RTT 변화율 (DevRTT) DevRTT = (1- )*DevRTT + * SampleRTT-EstimatedRTT SampleRTT 가 EstmiatedRTT 에서얼마나벗어났는지를예측 일반적으로 = 0.25 TimeoutInterval = EstimatedRTT + 4*DevRTT 왕복시간예측값 여유값 순천향대학교컴퓨터공학과 64
과제 연습문제 P31 P31. 5 개의측정된 SampleRTT 값에대해 DevRTT, EstimatedRTT, TimeoutInterval 계산 5 개의측정된 SampleRTT 값 : 106 ms, 120 ms, 140 ms, 90 ms, 115 ms 5 개의측정값을얻기전 EstimatedRTT 값은 100 ms = 0.125, = 0.25 DevRTT = (1- )*DevRTT + * SampleRTT-EstimatedRTT EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT TimeoutInterval = EstimatedRTT + 4*DevRTT 순천향대학교컴퓨터공학과 65 3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 66
TCP 신뢰적데이터전달 (TCP Reliable Data Transfer) TCP 는비신뢰적인인터넷네트워크계층 (IP 서비스 ) 상위계층에서신뢰적인데이터전달 (rdt, reliable data transfer) 서비스를제공 파이프라인되는세그먼트 누적 ACKs (cumulative ACKs) 단일재전송타이머 재전송시점 타임아웃이벤트 중복 ACKs (duplicated ACKs) 간소화된 TCP 송신자 (simplified TCP sender) 부터먼저소개 중복 ACKs 무시 흐름제어, 혼잡제어무시 순천향대학교컴퓨터공학과 67 TCP 송신자이벤트 (1) 전송 / 재전송과관련된 TCP 송신자의 3 가지이벤트 상위애플리케이션으로부터수신된데이터 타이머타임아웃 ACK 수신 상위애플리케이션으로부터수신된데이터 이벤트 순서번호를포함한세그먼트생성 순서번호는세그먼트에서첫번째바이트의바이트스트림번호 타이머가이미동작중에있지않으면타이머를시작 타이머의만료주기 (expiration interval): TimeOutInterval 순천향대학교컴퓨터공학과 68
TCP 송신자이벤트 (2) 타이머타임아웃 이벤트 타임아웃을유발한세그먼트를재전송 타이머를다시시작 ACK 수신 이벤트 이전에응답받지못한세그먼트의확인응답 (ACK) 이면 : 해당세그먼트를 ACK 응답된세그먼트로표시 아직 ACK 응답을받지못한세그먼트들이존재하면타이머를시작 순천향대학교컴퓨터공학과 69 간소화된 TCP 송신자 (1) 순천향대학교컴퓨터공학과 70
간소화된 TCP 송신자 (2) Sendbase-1 마지막에누적확인응답 (ACK) 된세그먼트의마지막바이트번호 예 SendBase-1 = 71 y= 73 수신자는 73+ 를받기원함 y > SendBase 새데이터가확인응답 순천향대학교컴퓨터공학과 71 TCP 재전송시나리오 (1) 순천향대학교컴퓨터공학과 72
TCP 재전송시나리오 (2) 순천향대학교컴퓨터공학과 73 TCP ACK 생성 [RFC 1122, RFC 2581] 이벤트 기다리는순서번호를가진순서에맞는세그먼트의도착. 이순서번호이전까지의모든데이터수신 기다리는순서번호를가진순서에맞는세그먼트의도착. ACK 전송을준비하는다른세그먼트를가짐. 기다리는것보다높은순서번호를갖는순서가틀린세그먼트의도착. 간격 (gap) 이감지. 간격을부분적으로또는모두채우는세그먼트의도착. TCP 수신자동작 지연된 ACK. 다른순서에맞는다음세그먼트도착을위해 500ms 까지기다린다. 만약다음세그먼트가이기간동안에도착하지않으면 ACK 를보냄. 즉시두개의순서에맞는세그먼트들의 ACK 전송을위해하나의누적 ACK(cumulative ACK) 를전송 즉시기다리는바이트의순서번호 ( 간격의최저값 ) 를나타내는중복 ACK (duplicated ACK) 를전송간격의최저값부터세그먼트가시작된다면즉시 ACK를전송 순천향대학교컴퓨터공학과 74
빠른재전송 (Fast Retransmit) 타임아웃주기가상대적으로길어질수있음 손실된패킷을다시보내기전까지오래기다림 중복 ACK 를사용하여손실된패킷들을감지 송신자는종종많은개수의세그먼트들을연속적으로보냄 세그먼트가손실되면많은중복 ACK 발생 빠른재전송 송신자가같은데이터에대해 3 개의중복 ACK 를수신하게되면 ACK 응답된세그먼트의다음세그먼트가손실되었다고가정 타이머가만료되기전에재전송 순천향대학교컴퓨터공학과 75 빠른재전송예 순천향대학교컴퓨터공학과 76
빠른재전송알고리즘 순천향대학교컴퓨터공학과 77 3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 78
TCP 흐름제어 (TCP Flow Control) (1) 흐름제어 수신자는송신자가너무많은데이터를너무빠르게전송하여수신자의버퍼를오버플로우시키는것을방지하는서비스 순천향대학교컴퓨터공학과 79 TCP 흐름제어 (2) 수신자는 TCP 송신세그먼트의헤더에 rwnd 값을포함시켜버퍼의여유공간을송신자에게알려줌 RcvBuffer 크기는소켓옵션으로지정 ( 일반적으로디폴트값은 4096 바이트 ) 많은운영체제들이 RcvBuffer 크기자동조정 송신자는전송확인응답 (ACK) 이안된데이터의양이수신자의 rwnd 여유공간보다작은값을가지도록유지 수신자의버퍼가오버플로우되지않도록보장 순천향대학교컴퓨터공학과 80
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 81 TCP 연결관리 (1) (TCP Connection Management) TCP 송신자 / 수신자는데이터교환전에핸드세이크 연결 (connection) 을설정 ( 서로연결할의사가있음을확인 ) 연결파라미터값들합의 순천향대학교컴퓨터공학과 82
연결설정합의 (1) Q: 네트워크상의 2- 웨이핸드세이크가항상잘동작할까? 가변지연 메시지손실로재전송 (e.g. req_conn(x)) 메시지순서의어긋남 => 상대편의상황을제대로파악할수없음 순천향대학교컴퓨터공학과 83 연결설정합의 (2) 순천향대학교컴퓨터공학과 84
TCP 3- 웨이핸드셰이크 (TCP 3-way Handshake) (1) 세방향핸드셰이크 (three way handshake) 1 단계 : 클라이언트는서버에 SYN 세그먼트를송신 세그먼트헤더의 SYN 비트플래그세트 최초의순서번호를기술 데이터없음 2 단계 : 서버는 SYN 을받고, SYNACK 세그먼트를응답 서버는 TCP 버퍼와변수를할당 서버의최초순서번호를기술 3 단계 : 클라이언트는 SYNACK 를받고, ACK 응답 클라이언트는 TCP 버퍼와변수를할당 ACK 응답에데이터 ( 세그먼트페이로드 ) 가포함될수도있음 순천향대학교컴퓨터공학과 85 TCP 3- 웨이핸드셰이크 (2) 순천향대학교컴퓨터공학과 86
TCP 3- 웨이핸드셰이크 - FSM 순천향대학교컴퓨터공학과 87 TCP 연결종료 (1) 연결종료 (close) 클라이언트가연결종료하는경우가정 clientsocket.close(); 1 단계 : 클라이언트는서버에 FIN 세그먼트를송신 세그먼트헤더의 FIN 비트플래그세트 2 단계 : 서버는 FIN 을받고, ACK 세그먼트를응답, FIN 세그먼트를송신 3 단계 : 클라이언트는 FIN 을받고, ACK 세그먼트를응답 대기시간 (timed wait) 동안기다린후연결종료됨 4 단계 : 서버는 ACK 를받고, 연결을종료됨 순천향대학교컴퓨터공학과 88
TCP 연결종료 (2) 순천향대학교컴퓨터공학과 89 과제 - 연습문제 P27 P27. TCP 의신뢰적인데이터전달 호스트 A -> B TCP 연결 초기순서번호 127, 출발지포트 302, 목적지포트 80 B는이미 A로부터 126 바이트수신 A는연속하여 80 바이트, 40 바이트두개의세그먼트송신 a. 두번째세그먼트의순서번호, 포트번호? b. 첫세그먼트의 ACK 번호, 포트번호? c. 첫세그먼트가도착하기전두번째세그먼트가먼저도착한경우 ACK 번호? d. 두세그먼트가순서대로도착, 첫번째 ACK를손실하고, 두번째 ACK가타임아웃후도착한상황에서의타이밍다이어그램 ( 세그먼트에순서번호, 데이터바이트수, 추가한 ACK 번호등표시 ) 순천향대학교컴퓨터공학과 90
3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 91 혼잡제어의원리 (Principles of Congestion Control) 혼잡 (congestion) 네트워크이감당할수없을정도로너무많은출발지 (source) 에서너무많은데이터를너무빨리송신 하는것이원인 혼잡원인을처리하기위해선혼잡을일으키는송신자들을억제하는메커니즘이필요 혼잡제어는흐름제어와는다름 네트워크혼잡의결과 패킷손실 ( 라우터의버퍼오버플로우 ) 긴패킷지연 ( 라우터버퍼에서큐잉 ) 혼잡제어는네트워킹의기본적인중요한문제의상위 10 개목록 (top-10) 에포함 순천향대학교컴퓨터공학과 92
혼잡의원인과비용 - 시나리오 1 두송신자, 두수신자 송수신속도 ( 전송률 ) in out 링크처리량 R ( 또는라우터용량 C) 무한크기의버퍼를갖는한개의라우터 재전송없음 혼잡시큰지연 최대처리량은 R/2 순천향대학교컴퓨터공학과 93 혼잡의원인과비용 - 시나리오 2 유한버퍼를가진하나의라우터 송신자는손실된 ( 타임아웃 ) 패킷을재전송 애플리케이션계층입력 = 애플리케이션계층출력, in = out 트랜스포트계층입력은재전송된데이터를포함, in in 순천향대학교컴퓨터공학과 94
혼잡의원인과비용 - 시나리오 2.1 송신자는라우터버퍼가가용할때만송신한다고가정 손실없음 순천향대학교컴퓨터공학과 95 혼잡의원인과비용 - 시나리오 2.2 (1) 송신자는패킷이손실된경우에만재전송하는경우가정 순천향대학교컴퓨터공학과 96
혼잡의원인과비용 - 시나리오 2.2 (2) 송신자는패킷이손실된경우에만재전송하는경우가정 순천향대학교컴퓨터공학과 97 혼잡의원인과비용 - 시나리오 2.3 (1) 실제상황 라우터버퍼가차있는경우패킷손실 송신자가너무일찍타임아웃되어두개의복사본을전송 순천향대학교컴퓨터공학과 98
혼잡의원인과비용 - 시나리오 2.3 (2) 실제상황 라우터버퍼가차있는경우패킷손실 송신자가너무일찍타임아웃되어두개의복사본을전송 혼잡의비용 (cost of congestion) 손실된패킷들을재전송 큰지연으로인한불필요한재전송 라우터가패킷의불필요한복사본을전달하는데링크대역폭사용 순천향대학교컴퓨터공학과 99 혼잡의원인과비용 - 시나리오 3 (1) 네개의송신자 멀티홉경로 타임아웃 / 재전송메커니즘 in ' in 이큰경우에무슨일이발생하는가? ' in 이증가 ( 빨강 ) 함에따라, 위라우터의패킷 ( 파랑 ) 들이손실 순천향대학교컴퓨터공학과 100
혼잡의원인과비용 - 시나리오 3 (2) 또다른혼잡비용 패킷이경로상에서버려질때, 버려지는지점까지패킷을전송하는데사용된상위라우터에서사용된전송용량은낭비 순천향대학교컴퓨터공학과 101 3 장. 트랜스포트계층 3.1 트랜스포트계층서비스개요 3.2 다중화와역다중화 3.3 비연결형트랜스포트 : UDP 3.4 신뢰성있는데이터전송의원리 3.5 연결지향형트랜스포트 : TCP 세그먼트구조 신뢰적인데이터전달 흐름제어 연결관리 3.6 혼잡제어의원리 3.7 TCP 혼잡제어 순천향대학교컴퓨터공학과 102
TCP 혼잡제어개요 - AIMD (Additive-Increase, Multiplicative-Decrease) AIMD(Additive-Increase, Multiplicative-Decrease) 손실이발생할때까지가용한대역폭을탐지하면서 (probing) 전송률 ( 혼잡윈도우크기, cwnd) 을증가 혼잡윈도우 (congestion window) 크기가 10 MSS 이면한번에최대 10 MSS 연속송신가능 가법적증가 (additive increase) 손실이감지될때까지매 RTT (round trip time, 왕복시간 ) 마다혼잡윈도우크기를 +1 증가 승법적감소 (Multiplicative-Decrease) 손실발생후에혼잡윈도우를반으로줄임 혼잡윈도우크기 (cwnd) 값이톱니모양패턴 순천향대학교컴퓨터공학과 103 TCP 혼잡제어 - 상세내용 송신자의송신률 cwnd 바이트를송신하고, RTT 동안 ACK 를기다린후더많은바이트를전송 송신자에서확인안된데이터양을제한하여전송률제한 LastByteSent-LastByteAcked cwnd cwnd 는감지된네트워크혼잡도에따라동적으로변함 순천향대학교컴퓨터공학과 104
TCP 슬로스타트 (TCP Slow Start) 연결이시작되었을때첫번째손실이벤트발생하기까지전송률을지수적으로증가 초기에 cwnd 는 1 MSS 매 RTT 마다 cwnd 는두배로증가 매 ACK 를수신할때마다 cwnd 가 1 MSS 만큼증가 요약 슬로스타트동안에는초기전송률은느리지만지수적으로빠르게증가 순천향대학교컴퓨터공학과 105 TCP - 손실감지및반응 타임아웃이벤트발생손실추정 cwnd 를 1 MSS 로설정하고, 특정임계치 (threshold) 까지전송률이지수적으로증가 ( 슬로스타트처럼 ) 특정임계치에도달하면혼잡회피 (congestion avoidance) 단계로진입하여 cwnd 가선형적으로증가 3 개의중복 ACK 수신손실추정 : TCP Reno 중복된 ACK 를수신했다는사실은네트워크이일부세그먼트들을전송여력이있음을표시 cwnd 를반으로줄이고이후윈도는선형적으로증가 매 ACK 마다 MSS x (MSS/cwnd) 바이트증가» 혼잡윈도우크기가 10 MSS 인경우매 RTT 마다 1/10 MSS 증가» 송신된 10 개의 MSS 응답이모두도착해야 1 (10*1/10) 증가 TCP Tahoe 는항상 cwnd 를 1 MSS 로설정 타임아웃, 중복 ACK 손실구분없음 순천향대학교컴퓨터공학과 106
TCP 슬로스타트에서혼잡회피전환 언제지수적증가를선형적증가로변경하는가? cwnd 값이타임아웃전의 1/2 크기에도달할때 구현 가변적임계치 (variable threshold) 손실이벤트가발생하면임계치를손실이벤트전의 cwnd 의 1/2 크 기로설정 혼잡회피 3 개 ACK 수신 3 개의혼잡 ACK 수신시혼잡윈도우예, 초기 ssthresh (slow start threshold) 는 8 MSS 슬로스타트 순천향대학교컴퓨터공학과 107 요약 - TCP 혼잡제어 (TCP Congestion Control) 순천향대학교컴퓨터공학과 108
TCP 처리율 (TCP Throughput) 윈도우크기와 RTT 함수로써 TCP 의평균처리율 (average throughput) 은? 슬로스타트는무시하고, 항상데이터를송신한다고기정 손실발생시윈도우크기가 w 이면 평균윈도크기 ¾ W 평균처리율은 RTT 당 ¾ W 순천향대학교컴퓨터공학과 109 TCP 의미래 광대역경로상의 TCP 예 : 1500 바이트세그먼트, 100ms RTT 10 Gbps 처리율로전송원함 평균윈도크기가 w = 83,333 세그먼트요구 [RFC 3649] 많은양의세그먼트이며, 손실가능성 손실관점에서평균처리율 L 은손실률 1.22 MSS RTT 10 Gbps 처리율달성을위해 L = 2 10-10 오십억개의세그먼트당하나의손실이벤트 고속환경을위한새로운버전의 TCP 연구필요 L 순천향대학교컴퓨터공학과 110
TCP 공평성 (TCP Fairness) 공평성 (fairness) K 개의 TCP 연결이 R bps 의전송률 ( 대역폭 ) 의병목링크 (bottleneck link) 를공유하는경우, 각연결의평균전송률이 R/K 에가깝다면혼잡제어메커니즘은공평 순천향대학교컴퓨터공학과 111 TCP 가공평한이유 이상적으로두처리율의합은 R 과같아야함 동등한대역폭공유와전체대역폭이용선의교차지점가까운곳의처리율 R 전체대역폭이용선 동등한대역폭공유 손실 : 윈도크기반으로감소혼잡회피 : 가법적증가 연결 1 처리율 R 순천향대학교컴퓨터공학과 112
공평성과 UDP 멀티미디어애플리케이션들은 TCP 를사용하지않음 혼잡제어로인한전송속도조정을하지않음 UDP 사용 일정한속도로오디오 / 비디오를전송 패킷손실감수 TCP 관점에서 UDP 는공평하지못함 다른연결과협력하지않고, 전송률조절도하지않음 UDP 가 TCP 트래픽을밀어낼가능성있음 연구분야 UDP 트래픽으로인한인터넷마비방지하는혼잡제어방식 순천향대학교컴퓨터공학과 113 공평성과병렬 TCP 연결들 (Parallel TCP Connections) TCP 기반애플리케이션이두호스트사이에다중병렬연결될수있음 웹브라우저는웹페이지에다중객체전송을위해다중병렬 TCP 연결사용 예 : 9 개의진행중인연결을지원하는전송률 R 인링크 새애플리케이션이 1개의 TCP 연결을사용 => 전송률 R/10 획득 새애플리케이션이 11개의병렬 TCP 연결을사용 => R/2 보다많은전송률획득불공평한할당 순천향대학교컴퓨터공학과 114
명시적혼잡표시 (Explicit Congestion Notification, ECN) 네트워크 - 지원혼잡제어 라우터가 IP 헤더 (ToS 필드 ) 의 2 비트로네트워크혼잡여부를표시 혼잡표시가목적지호스트로전송 수신자는혼잡표시를보고송신자에게보내는 ACK 세그먼트에혼잡여부를알려주는 ECE 비트를세트 순천향대학교컴퓨터공학과 115 과제 - 연습문제 P40 P40. TCP 혼잡제어 p.274 그림 3.58 TCP 슬로스타트, 혼잡회피구간 3개중복 ACK, 타임아웃 임계값... 순천향대학교컴퓨터공학과 116
요약 (Summary) 트랜스포트계층서비스 다중화 (multiplexing), 역다중화 (demultiplexing) 신뢰적인데이터전송 (reliable data transfer) 흐름제어 (flow control) 혼잡제어 (congestion control) 인터넷에서의구현 UDP TCP 다음학습내용 : 네트워크 가장자리 (edge) 학습종료 ( 애플리케이션, 트랜스포트계층 ) 네트워크 코어 (core) 학습 순천향대학교컴퓨터공학과 117 과제 - 연습문제 P9. rdt 3.0에서송신된데이터패킷이오류발생한경우와수신측에서보낸확인응답이오류발생한경우각각에대한타이밍다이어그램 P31. 5개의측정된 SampleRTT 값에대해 DevRTT, EstimatedRTT, TimeoutInterval 계산 P27. TCP의신뢰적인데이터전달 P40. TCP 혼잡제어 순천향대학교컴퓨터공학과 118
실습텀과제 - TCP, Wireshark 실습 (1) 브라우저를통해파일을업로드할수있는특정웹사이트를방문하여 TCP 동작분석 아래웹사이트가아닌다른학생과중복되지않는다른웹사이트에연결 http://gaia.cs.umass.edu/wireshark-labs/tcp-wireshark-file1.html 실습순서 웹사이트방문 Wireshark 를실행하고패킷캡쳐 파일업로드 ( 업로드는크기는 5MB 이상 ) Wireshark 를중지, 패킷분석 캡처된패킷들은파일로저장하고제출 질문에응답하여캡처된 TCP 동작분석 TCP 연결설정 ( 세방향핸드셰이크 ) 패킷의순서번호, 확인응답번호 TCP 흐름제어 TCP 혼잡제어 : 슬로스타트, 혼잡회피 TCP 성능 : 처리율 (throughput), 왕복시간 (RTT) 순천향대학교컴퓨터공학과 119 실습텀과제 : TCP, Wireshark 실습 (2) 다음순서대로질문에답을하고, 해당답을제공하는 Wireshark 패킷리스트를캡처하고답을제공하는부분을표시하고, 설명 Q1: 클라이언트와서버컴퓨터의 IP 주소와 TCP 포트번호? HTTP 메시지의 TCP 패킷을조사 디스플레이필터기술 tcp/http tcp/http 패킷만디스플레이 ip.addr== 주소해당주소가포함된패킷만표시 &&, 연산사용가능 http && ip.addr== 주소 (tcp http) && ip.addr== 주소 순천향대학교컴퓨터공학과 120
순천향대학교컴퓨터공학과 121 실습텀과제 : TCP, Wireshark 실습 (3) Q2: TCP SYN 세그먼트의순서번호? 세그먼트내의무엇이 SYN 세그먼트임을표시하는가? Q3: 서버가응답한 SYNACK 세그먼트의순서번호는? 이세그먼트의확인응답번호값과서버가이값을어떻게결정하는가? 세그먼트내의무엇이 SYNACK 세그먼트임을표시하는가? Q4: 파일을업로드하는 HTTP POST 명령을갖는 TCP 세그먼트의순서번호는? 패킷내용윈도우의 DATA 필드의내용에 POST 를갖는세그먼트를검색 Q5: HTTP POST를갖는 TCP 세그먼트를 TCP 연결첫번째세그먼트로간주하고, 이첫세그먼트부터처음 6개의세그먼트의순서번호는 ( 클라이언트에서서버로업로드되는 6개의세그먼트 )? 각세그먼트가전송된시간은? 각세그먼트의 ACK 응답시간은? Q6: 처음 6개세그먼트를보낸시간과 ACK 응답시간의차를계산한 RTT( 왕복시간 ) 은? 순천향대학교컴퓨터공학과 122
실습과제 : TCP, Wireshark 실습 (4) Q7: 처음 6 개세그먼트에대해 ACK 를수신후 EstimatedRTT 값은? 첫세그먼트의 EstimatedRTT 값은측정된 RTT 값과같다고가정 Q8: 메뉴의 Statistics->TCP Stream Graphs->Round Trip Time 을선택하여그래프를도시하고설명 순천향대학교컴퓨터공학과 123 실습텀과제 : TCP, Wireshark 실습 (5) Q9: 처음 6개세그먼트의데이터길이 (Len) 는? Q10: 전체트레이스에서서버수신자의가용한최소수신버퍼크기 (Win) 는? 수신버퍼 ( 윈도 ) 가부족하여송신자 ( 클라이언트 ) 의전송을제약했는가? 서버로부터 SYN ACK 응답패킷참조 TCP 패킷의헤더를추적 Q11: 재전송된세그먼트가발생했는가? Statistics->TCP Stream Graphs->Time Sequence(Stevens) 선택하여순서번호추적 순천향대학교컴퓨터공학과 124
실습텀과제 : TCP, Wireshark 실습 (6) Q12: 얼마나많은업로드데이터에대해수신자 ( 서버 ) 가 ACK 응답했는가? 각 ACK 응답이벤트를 p.229 표 3.2의기준에따라분류하라. Q13: TCP 연결 ( 파일업로드 ) 의처리율 (throughput, 전송된바이트 / 초 ) 성능은? 이값을계산한과정을설명하라. Q14: 클라이언트에서서버로의 Time Sequence Graph(Stevens) 를분석하여 TCP 슬로스타트 (slow start) 단계의시작과끝을구분할수있는가? 혼잡회피 (congestion avoidance) 는어디서발생하는가? 순천향대학교컴퓨터공학과 125