1. TCP
1) TCP란?
- 근거리 통신망이나 인트라넷, 인터넷에 연결 된 컴퓨터에서 실행되는 프로그램간의
데이터를 안정적, 순서대로, 에러없이 교환할 수 있게 함
- 패킷이 안전하게 이동할 수 있도록 해주는 규약
2) 흐름 제어
- 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
- 수신측이 너무 많은 패킷을 수신받지 않도록 하기 위해
- 수신측에는 패킷을 수신받는 버퍼의 크기가 정해져 있음
- 송신측의 전송속도가 너무 빨라 한번에 수 많은 패킷을 수신 받으면
버퍼가 가득차 소실되는 패킷들이 발생
1. Stop And Wait
- 매번 전송한 패킷에 대한 확인 응답을 받아야만 그 다음 패킷을 전송하는 기법
- 송신 > 응답 > 송신 > 응답과 같이 응답을 받아야 송신을 함
2. Sliding Window(Go Back n ARQ)
- 수신측에서 설정한 위도우 크기만큼 송식측에서 패킷 각각에 대한 확인 응답 없이 세그먼트를 전송하게 하고, 데이터 흐름을 동적으로 조절하는 기법
1) 초기화 : 3Way Handsahking을 통해 수신 측 윈도우 크기로 설정되며, 수신측 버퍼에 남아있는 공간에따라 변함.
윈도우 크기는 수신측에서 송신측으로 확인응답(ACK)를 보낼때 TCP헤더에 담아서 보냄
2) 동작방식 : 윈도우에 포함된 패킷을 계속 전송하고, 수신 측으로부터 확인응답(ACK)가 오면
윈도우를 옆으로 옮겨 다음 패킷들을 전송
3) 재전송 : 송신측은 일정 시간 동안 수신 측으로부터 확인응답(ACK)가 없으면, 패킷을 재전송함
만약 송식측에서 재전송을 했는데 소실 된 경우가 아니라 수신측 버퍼에 남는 공간이 없는 경우면 문제가 생김
이를 해결하기 위해 송신측은 해결응답(ACK)를 보내면서 남은 버퍼의 크기를 함께 보냄
3) 혼잡 제어
1. AIMD(Additive Increase/Multicative Decrease)
- 처음에 패킷을 하나씩 보내고 문제가 없으면 윈도우의 크기를 1씩 증가시켜 전송
- 만약 문제가 생기면 윈도우의 크기를 반으로 줄임
- 윈도우의 크기를 조금씩 늘리기 때문에 시간이 오래걸리는 단점이 있음
2. Slow Start (느린 시작)
- Slow Start는 윈도우의 크기를 1,2,4,8과 같이 지수적으로 증가시키다가 혼잡이 감지되면
윈도우의 크기를 1로 줄이는 방식
- 보낸 데이터의 ACK가 도착할 때마다 윈도우의 크기를 증가시킴
- 처음에는 윈도우의 크기가 조금 느리게 증가하지만 시간이 지나면 지날수록 윈도우의 크기가
점점 빠르게 증가하는 장점이 있음
3. Fast Retransmit (빠른 재전송)
- 패킷을 받는 수신자 입장에서는 세그먼트로 분할 된 내용들이
순서대로 도착하지 않는 경우가 생길 수 있음
- 위 상황이 발생했을 때 수신측에서는 순서대로 잘 도착한 마지막 패킷의
다음 순번을 ACK패킷에 싣어 보냄
- 이러한 중복 ACK를 3개 받으면 재전송이 이루어짐
- 송신측인 자신이 설정한 시간에 관계없이 패킷을 재전송 할 수 있기때문에
빠른 재전송을 유지할 수 있음
4. Fast Recovery (빠른 회복)
- 빠른 회복은 혼잡한 상태가 되면 윈도우 크기를 반으로 줄이고 선형증가 시키는 방법
- 혼잡상황을 한번 겪고 나면 AIMD방식으로 동작함
4) 혼잡 제어 정책
0. TCP Tahoe / TCP Reno
- 기본적으로 처음에는 Slow Start방식을 사용하다가 네트워크가 혼잡하다고 느낄때에는 AIMD방식으로 전환하는 방법을 사용하는 정책
1. TCP Tahoe
- Slow Start를 사용하여 자신의 윈도우 크기를 지수적으로 빠르게 증가시키다가 ACK Duplicated,
TimeOut이 발생하면 네트워크 혼잡이 발생했다고 판단하고 자신의 윈도우 크기를 1로 수정함
2. TCP Reno
- Tahoe와 같이 ACK Duplicated, TimeOut이 발생하면 자신의 윈도우 크기를 줄이는데, Duplicated일때는 반으로 줄이고, TimeOut일때는 1로 줄이는 방식
5) 오류제어
1. Stop And Wait
- 흐름제어 방식과 동일하게 송신측에서 패킷을 보내고 보낸 패킷에 대한 응답이 오면 다음 패킷을 보내는 방식
- 오류가 발생하면 송신한 패킷을 재전송하는 방식
2. ARQ (Automatic Repeat Request)
- 재전송을 최대한 적게하는 방식 중 하나로 Go Back N과 Selective Repeat이 있다.
2-1) Go Back N
- 오류가 발생한 데이터부터 다시 보내는 방식
- 이미 재전송한 데이터를 다시 보내야 하기때문에 비효율적임
2-2) Selective Repeat
- 오류가 발생한 패킷만 재전송 하는 방식
- 수신측의 버퍼에 순서가 보장되지 않는 단점이 있음
- 이를 해결하기 위해 수신 버퍼에 대한 재정렬이 필요하고 또 다른 공간을 필요로 함
2. IP
1) IP란?
- 인터넷 상에서 데이터를 주고 받기 위해 모든 컴퓨터가 가지는 주소
- OSI 7계층 중 3계층 (네트워크 계층)
2) IP vs IP주소
- IP : 패킷 데이터를 주고 받기 위한 통신 프로토콜
- IP주소 : 네트워크에서 데이터를 주고 받기 위한 주소
3) DNS?
- 도메인 네임 시스템 (Domain Name System)은 IP주소와 URL을 매칭시켜서 갖고 있는 시스템
사람이 기억하기에 IP숫자보다 문자가 더 편하기 때문에 문자로 된 도메인 이름을 IP주소로 변환
ex) 검색창에 www.naver.com 입력 > DNS서버 > 해당 웹 사이트 IP주소 변환
4) IPv4
- 0.0.0.0 ~ 255.255.255.255 까지 사용이 가능한 IP주소 체계
- 2의 32제곱으로 약 42억개 생성가능
- 처음 만들 당시에는 갯수가 충분할 것으로 생각했으나, 전자기기의 폭발적인 증가로 거의 고갈됨
- IPv4 대체 > IPv6는 2의 128제곱으로 거의 무한대에 가깝게 생성 가능
- 기존 IPv4를 완전히 대체하기까지 시간이 걸림. 현제 상용화 단계
5) IP 대역에 따른 클래스
- A클래스 : 대규모 네크워크 / 1 ~ 126 / 서브넷 마스크 - 255.0.0.0
- B클래스 : 중규모 네트워크 / 129 ~ 191 / 서브넷 마스크 - 255.255.0.0
- C클래스 : 소규모 네트워크 / 129 ~ 223 / 서브넷 마스크 - 255.255.255.0
- D클래스 : 연구/개발 네트워크 / 223 ~
※ 서브넷 마스크
- IP주소를 각 클래스별로 나누기 위한 구분 값
- 동일한 IP주소라도 서브넷 마스크로 A, B, C클래스 등으로 나눔
- 동일한 IP주소 서브넷 마스크 구분 예)
A) 123,456,7,0 (비트연산) 255.0.0.0 = 123.0.0.0 > A클래스 IP주소
B) 123.456.7.0 (비트연산) 255.255.0.0 = 123.456.0.0 > B클래스 IP주소
6) 공인IP / 사설IP
공인IP
- 공개형 IP / 가정용
- 공개형으로 보안에 취약함(방화벽 설정필요)
- IP를 제공하는 서비스 업체에서 보안 제공
공인IP를 할당받은 가정에서 공유기를 사용하면 해당 공유기에서 각 전자기기로 IP를 생성하여 할당하는데 이때 각각의 전자기기로 할당되는 IP는 사설IP(보안때문에)로 할당이 됨
사설IP
- 외부에서 접근할 수 없는 IP
- 사설IP는 A, B, C로 나눌 수 있는데 각각 IP주소가 정해져 있음
A : 10.xxx.xxx.xxx
B : 172.10.xxx.xxx
C : 192.168.xxx.xxx
7) 고정IP / 유동IP
고정IP
- 사용자가 직접 설정
- 변경하면 안되는 서버에 직접 설정하여 사용
ex) 변경되면 안되는 서버, 네트워크 프린트 등등
유동IP
- 자동으로 설정
- DHCP(Dynamic Host Configuration Protocol) 동적 호스트 구성 규약
IP주소와 게이트웨이 또는 네임서버의 주소 정보를 자동으로 할당해주는 프로토콜
유동 IP 할당 과정
- 컴퓨터 부팅 -> DHCP서버에 IP주소 할당 요청 -> IP주소 전달 -> 설정
- 컴퓨터가 부팅 될 때마다 매번 요청하지만 이전 IP주소를 재할당 받는 경우가 많음
8) 라우터
- 컴퓨터와 컴퓨터간에 데이터 패킷을 전송(네트워크 통신)하기 위한 하드웨어 장치
- 네트워크 통신을 위한 중계역할을 담당
라우팅
- 라우터에서 찾은 경로 중 최적의 경로를 선택하는 과정 (최단거리 or 빠른시간 등)
- 라우팅의 구성 요소
패킷 : 네트워크 회선에서 데이터의 한 묶음 단위
네트워크 주소 : 목적지의 주소
다음 게이트웨이 : 패킷을 전송할 주소 (서브넷 마스크)
인터페이스 : LAN, WAN, 가상 등을 연결하는 포로토콜
라우팅 종류
-
정적 라우팅
관리자가 지정한 경로대로 데이터를 전송
정해진 경로대로 동작하고 라우팅 테이블이 변경, 교환 되지 않아 속도가 빠르고 성능이 우수함
-
동적 라우팅
라우터가 알아서 최적의 경로를 찾아 데이터를 전송
지정한 경로가 아닌 가장 좋은 경로를 계산함
동적으로 경로가 변경 될 수 있기때문에 라우팅 테이블이 업데이트 되고 교환하기 때문에
라우터의 부담이 큼
※ 라우팅 테이블
- 네트워크상 특정 목적지까지의 거리와 가는 방법을 명시하고 있는 테이블
- 라우터가 목적지로 이동할 때 라우팅 테이블을 이용하여 찾아가게 됨