반응형

tcp 7

컴퓨터 네트워크 - TCP 특성, 송수신측 이벤트

TCP의 특성 TCP는 IP의 신뢰성없는 서비스 위에 신뢰성 있는 전송 서비스를 구현한다. cumulative acks 사용한다. 하나의 재전송 타이머를 사용한다. 재전송을 유발시키는 경우는 타임아웃 이벤트와 중복 ACK 수신의 경우이다. point-to-point: 한개의 송신자(one sender), 한개의 수신자(one receiver) 신뢰성reliable): 재전송을 통해 신뢰성있게 한다. 순차 바이트 스트림(in-order byte stream): 순서대로 전송. 어플리케이션 측에서 보면 하나의 스트림이 바이트 단위로 쭉 들어오는 것처럼 보인다. pipelined: ACK없이도 window를 통해 여러 패킷을 보낼 수 있다. 혼잡제어와 흐름제어가 가능하다. send & receive buffe..

컴퓨터 네트워크 - TCP segment structure

TCP segment structure TCP 세그먼트의 헤더는 총 20 bytes로 구성된다. (32bits(4bytes) * 5 = 20 bytes, 옵션은 제외) source port # : 송신측의 포트 번호 dest port # : 수신측의 포트 번호 sequence number : 해당 세그먼트의 첫 번째 데이터 바이트가 응용층에서 보낸 전체 데이터 스트림에서 몇 번째 바이트인가를 표시한다. TCP 연결이 맺어질 때 초기의 sequence number는 송수신 모두 랜덤 하게 선택한다. 예시로 500,000 bytes의 데이터 스트림 파일 전송에서, MSS(maximum segement size, 헤더부분 제외)가 1,000 bytes면 데이터 스트림은 세그먼트 크기가 1,000 bytes인 ..

컴퓨터 네트워크 - TCP Three & Four way handshaking

TCP Connection Management TCP 송신 측과 수신 측은 데이터 세그먼트들을 주고받기 전에 연결을 맺는다. 이때 sequence number, buffer size, flow control info(RcvWindow 등) 등의 변수들이 초기화돼서 설정이 된다. 서버(수신 측)는 특정 포트번호를 주어 소켓을 생성하면 welcomeSocket을 가지고 클라이언트(송신 측) 요청에 대기한다. 클라이언트는 소켓을 생성할 때 연결한 서버의 ID(Domain name), 포트 번호를 주면 바로 서버의 welcomSocket으로 three-way handshaking(연결)을 시작한다. 서버는 클라이언트로부터 요청이 오면 이에 대응하는 한 개의 소켓(connection socket)을 생성하여 클라..

컴퓨터 네트워크 - TCP Flow Control

TCP Flow Control Flow control은 송신 측이 너무 많이, 너무 빨리 데이터를 전송하여 수신 측의 버퍼를 오버플로 하지 않게 하기 위한 스피드 매칭이다. 수신 측이 처리할 수 있는 속도보다 송신 측이 전송 속도를 일치시킨다. 수신자가 송신측에게 하는 행위이다. 수신측은 수신 버퍼(RcvBuffer)를 가지고 있다. 버퍼에 있는 TCP data를 application process가 읽어 들이는 속도가 송신 측에서 데이터를 보내는 속도보다 느린 경우 버퍼가 꽉 차게 되고 이후 들어오는 데이터는 손실(loss) 된다. 수신 버퍼의 남은 공간을 Receive Window(RcvWindow)라 부른다. RcvWindow의 크기는 RcvBuffer(전체 공간) - [LastByteRcvd - ..

컴퓨터 네트워크 - TCP Fast Retransmit

Fast Retransmit Fast retransmit은 타이머의 타임 아웃 기간이 상대적으로 너무 길어 타이머가 종료되기 전이라도 중복된(duplicate) ACK를 3번 받으면 바로 재전송을 하는 기능이다. 손실된 패킷을 재전송하기 전 발생하는 긴 지연시간을 줄여준다. Duplicate ACK 수신을 통해 세그먼트가 손실되었음을 감지한다. 손실된 경우 수신 측은 여러 중복 ACK들을 발생시킨다. 송신자는 동일한 데이터에 대해 3개의 ACK를 수신하면 ACK 된 데이터 이후의 세그먼트가 손실된 것으로 가정한다. Duplicate ACK는 비정상적인 순서(out-of-order)의 패킷이 수신될 시 수신 측에서 발생시키기 때문에 현재까지 ACK가 완료된 패킷 다음 패킷이 손실 난 상태에서 그다음 패킷들..

컴퓨터 네트워크 - Transport Layer

Transport Layer Transport layer의 서비스와 프로토콜은 송수신 호스트상의 응용프로세스간의 논리적인 연결을 제공한다. Tranport 프로토콜은 송수신 종단 단말(end-system)에서만 수행된다. 중간의 라우터 스위치와 같은 네트워크 장비에는 physical, data link, network layer까지 구현될 수 있으나, tranport와 application layer는 종단 단말에서만 수행된다. 송신측: application layer에서 전달되어진 메시지를 세그먼트(segments) 단위로 나누어 네트워크층으로 전달한다. 수신측: 전달받은 세그먼트들을 메시지로 재결합하고 application layer로 전달한다. 인터넷에서 주로 사용하는 대표적인 transport p..

컴퓨터 네트워크 - Socket program - TCP(Web) & UDP

Socket 프로세스 간에 메시지 송수신시에 소켓을 통해 전달한다. 소켓은 애플리케이션 프로세스와 종단 Transport protocol(TCP or UDP)의 데이터 전달 통로의 역할을 한다. 프로세스는 소켓을 통해 Transport 층으로 데이터를 보내고 인터넷을 통해 전달이 되면 Transport층에서 소켓을 통해 프로세스로 전달하게 된다. Socket program Socket(소켓) 프로그래밍이란 네트워크 상에서 두 개의 애플리케이션 프로세스가 특정 포트를 통해 메시지를 주고받는(양방향 통신)이 가능하도록 만들어주는 방법이다. 서버와 클라이언트는 특정 포트를 통해 연결을 유지하고 있어 실시간으로 양방향 통신하는 것을 소켓 프로그래밍이라 한다. 실시간으로 데이터를 주고받는 상황에서 사용되며 실시간..

반응형