흐름제어
- 송신 측이 수신 측보다 속도가 빠르다면 수신 측 저장용량을 초과한 패킷은 손실될 위험이 있다.
- 흐름제어는 송신측과 수신측의
TCP 버퍼
크기 차이를 극복하기 위한기법
방법1 : Stop and Wait
- 매번 패킷에 대해 확인 응답(ACK)을 받으면 다음 패킷을 전송하는 방법
- 하나씩 보내고 기다리는 과정때문에 속도가 매우 느리다.
방법2 : Sliding Window
- 수신측에서 설정한 윈도우의 크기만큼 송신측에서 패킷을 전송하여 데이터 흐름을 동적으로 조절
- 초기 윈도우 크기로는 3-way-handshaking에서 수신측 윈도우 크기로 정해진다.(ACK 를 보낼 때 TCP 헤더에 크기 지정)
혼잡제어
- 네트워크 라우터의 용량이 다 차면 패킷 유실이 발생하고 이로 인해 각 노드에서는 유실된 패킷에 대해 더 많은 패킷을 전송하게 됨
방법1: AIMD
(Additive Increase / Multicative Decrease)
- 합 증가 / 곱 감소 방식
- 패킷을 보내고 문제가 없으면 윈도우의 크기를 1씩 증가
- 전송 실패하면 윈도우의 크기를 반으로 줄임
- 네트워크의 용량을 모두 사용할 때까지 시간이 많이 걸린다는 단점이 있음
방법2: Slow Start
- 패킷 전송을 지수적으로 증가시키다가 혼잡 상황이 되면 윈도우 크기를 1로 줄임
- 초반에는 데이터 전송이 느리지만 지수적으로 증가시키기 때문에 빠르게 증가한다.
방법3: Fast Retransmit
- 혼잡이 발생해서 패킷이 순서대로 도착하지 않는 경우가 있음
- 이때 수신측은 순서대로 도착한 마지막 패킷의 순번을 ACK 패킷에 실어 보냄
- 똑같은 순번 3개를 받으면 송신 측에서는 해당 패킷의 다음 순번을 재송신
- Time-out이 지나지 않아도 해당 패킷을 빠르게 보낼 수 있기 떄문에 빠른 재송신률 유지 가능
방법4: Fast Recovery
- 보내는 패킷을 지수 증가 시키다가 혼잡 상태가 되면 윈도우 크기를 반으로 줄이고 선형증가
혼잡제어 정책
TCP Tahoe
- 처음에는 Slow Start를 사용하다가 임계점 도달하면 AIMD 방식 사용
- 그러다
3 ACK Duplicated
또는 타임아웃
이 발생하면 임계점은 혼잡 발생한 패킷의 절반으로, 윈도우는 1로 줄인다.
TCP Reno
- 처음에 Slow Start를 사용하다가 임계점 도달하면 AIMD 방식 사용하는 것은 위와 똑같음
- 하지만
3 ACK Duplicated
발생하면 빠른회복 방식 사용
Time out
발생하면 윈도우 크기 1로, 임계가 절반으로.
HTTP와 HTTPS
HTTP
의 문제점
- HTTP(TCP/IP)는 도청 가능한 네트워크이다.
- 통신 상대를 확인하지 않기 때문에 위장 가능하다.
- 상대가 누구인지 확인하는 처리는 없기 때문에 누구든지 리퀘스트를 보낼 수 있다.
- 때문에 패킷을 가로채서 조작 가능하다.
Dos
공격도 가능하다
- 완전성을 증명할 수 없기 때문에 변조 가능하다.
- 송신측에서 보낸 데이터를 누군가가 가로채 내용을 바꿔 전송할 수 있다. (중간자 공격
Man-in-the-Middle
)
HTTPS
HTTP에 SSL(Secure Socket Layer)
를 입힌것
- 콘텐츠를 암호화 해서 전송 가능
- SSL은 인증 수단으로 증명서 제공 (
CA
로부터 발급받은 증명서) (CA: Certificate Authority)
- 처음 통신을 할 때
비대칭키
방식으로 통신한 다음에 대칭키
방식으로 통신