### 스터디 내용 ###
1. 네트워크 기초(TCP/IP) & Socket
2. JAVA I/O (Stream)
3. Thread (멀티채팅용)
< 출처 >
operatingsystems.tistory.com/entry/NW-Congestion-Control
< TCP/IP >
- 특징
1. Connection oriented : local과 remote 사이의 연결 이후 데이터 송수신이 발생한다.
* TCP 연결 식별자란, 두 endpoint(local,remote) 주소를 합친 것으로 <로컬 IP 주소, 로컬 포트번호, 리모트 IP 주소, 리모트 포트번호> 형태이다
2. Bidirectional byte stream : 양방향 데이터 통신을 하며, 바이트 스트림을 사용한다.
* Byte stream이란, 연속적으로 전송되는 데이터의 흐름을 말한다.
3. In-order delivery : 송신자의 데이터가 순서대로 수신자에게 전달된다. (32-bit 정수 자료형을 사용한다)
4. Reliability through ACK : 송신자가 수신자로부터 ACK를 받지 않으면 데이터를 재전송한다
* ACK란, 수신자가 송신자로부터 데이터를 받았을 때 전송하는 수신확인 패킷이다.
5. Flow control : 송신자는 수신자가 받을 수 있는 만큼의 데이터만을 전송한다.
* receive window란, 데이터를 받을 수 있는 사용하지 않은 버퍼공간을 의미한다.
6. Congestion control :송신자 측에서 혼잡을 방지하기 위해 특수한 알고리즘을 이용하여 제어하는 것을 말한다.
* window는 TCP가 현재 작업하고 있는 공간을 말한다.
(작업이 끝난 공간은 closed window라고 말하며, 진행중이거나 확인(ACK)이 덜끝난 영역은 opened window라고 말한다.)
- 과정
Slow Start → Congestion Avoidance → Congestion Detection 으로 진행되며, Congestion Detection(탐지)가 발생할 경우에 피드백이 일어난다.
Slow Start는 congestion window size(cwnd)가 기하급수적으로 증가한다.
(영화를 다운받을 때 전송률이 kb/s에서 mb/s로 빠르게 올라가는 경우)
Congestion Avoidance는 cwnd가 천천히 증가한다.
(다운받는 전송률이 일정 속도이상 올라가면 조금씩 증가하거나 감소하는 경우)
* Congestion Detection이 발생하는 경우
1. 수신자가 송신자로부터 패킷을 전달받는 시간이 초과된 경우 : RTO(Retransmission Time Out)
-> Slow Start로 feedback
2. 수신자가 송신자로부터 동일한 패킷에 대해 전달받지 못했을 때 중복된 ACK를 3개 전달하는 경우 : 3 duplicated Ack
-> Congestion Avoidance로 feedback
* 왜 RTO가 발생하면 Slow Start로 돌아가는 것일까?
< Socket >
: 네트워크를 경유하는 프로세스 간 통신의 종착점으로 이곳에서 데이터를 처리한다.
- 특징
1. 3-Way Handshaking(SYN,ACK)을 통해 클라이언트와 서버가 연결을 이룬다.
2. 전송된 데이터가 처리(write)될 때까지 다음 전송(read)이 이루어지지 않는다.
'SecurityFactorial > Chat Filtering (X)' 카테고리의 다른 글
두번째 회의 (0) | 2020.07.11 |
---|---|
채팅 프로그램 분석 2차 회의 (0) | 2020.07.10 |
웹채팅 서비스 만들기 (1) | 2020.07.06 |
채팅 프로그램 분석 1차 회의 (0) | 2020.07.05 |
계획서 및 첫 회의 (0) | 2020.07.05 |