지금까지 연결 지향 (connection oriented) 프로토콜인 TCP 에 집중했다.
연결 지향 프로토콜은
연결을 설정하고, 이걸 이용해 데이터가 적절하게 전송 되었는지 확인한다.
이렇게 하면, 연결된 양쪽은 항상 어떤 비트의 데이터가 확실히 전달 되었는지 아닌지를 알 수 있다.
A 지점에서 B 지점 으로 데이터를 가져오려고 하는 동안 잘못될 가능성이 있기 때문에
(낮은 레벨에서 비트는 특정 전압 범위 내의 전기 신호일 뿐이라는 것)
연결 중심의 프로토콜이 아주 중요하다.
단 한 비트라도 잘못 전송 되면 전체 프레임을 버리게 할 수가 있다.
또 트래픽이 회선 오류를 넘어 목적지에 도달하지 못할 수도 있다.
라우터가 트래픽 전달을 위해 우리의 트래픽을 떨어뜨릴 수도 있고,
광케이블이 절단 될 수 도 있다.
TCP 같은 연결 지향 프로토콜은 연결을 형성하고 지속적으로 ACK 스트림을 통해 이를 보호 할 수 있다.
IP와 이더넷 같이 네트워크 하위 모델에 있는 프로토콜들은 그들이 받은 모든 데이터가 정확한지 확인하기 위해
체크섬을 사용한다.
하지만 이 체크를 통과하지 못한 데이터를 다시 보내려는 시도는 전혀 하지않는다.
그건 전부 전송 계층 프로토콜에 의해 보내지는 것이기 때문에
IP 또는 이더넷 수준에서 체크섬이 계산되지 않으면 데이터는 폐기한다.
이 데이터를 언제 다시 보낼지는 TCP 에 달려있다.
TCP는 전송되는 데이터의 모든 비트에 ACK 를 예상하므로,
어떤 데이터가 성공했는지 알 수 있는 가장 좋은 위치의 레이어고 필요할 경우 세그먼트를 다시 전송하기로 결정 할 수 있다.
시퀀스 번호가 중요한 이유는 TCP 는 일반적으로 모든 세그먼트를 순차적으로 전송하지만,
항상 그런 순서로 도착하지 않기 때문이다.
하위 계층의 오류로 세그먼트가 재분배 되어야 한다면 ,순서가 잘못되어서 도착할 수 있다.
이걸 시퀀스 번호가 모든 데이터를 올바른 순서로 다시 조합 할 수 있게 해준다.
자 근데 , TCP 같은 연결 지향 프로토콜은 많은 오버헤드가 발생한다.
연결을 설정해야되고, 계속 ACK 스트림을 보내야 되고 마지막 연결도 끊어야 한다.
이게 여분의 트래픽을 차지하게 된다.
이제 무연결 프로토콜과 비교해 볼 수 있다.
이것 중 대표적인건 UDP (사용자 데이터그램 프로토콜) 이다.
TCP 와 달리 UDP 는 연결하지 않고 ACK 라는 개념조차 없다.
UDP 에서는 대상 포트를 설정하고 패킷을 전송한다.
이건 아주 중요하지 않은 메시지에 유용하게 사용된다. (대표적으론 비디오 스트리밍이 있다.)
각각의UDP 데이터그램이 비디오의 단일 프레임이면
프레임 한 두개가 없어도 비디오 관람의 크게 문제가 되진 않는다.
TCP 의 오버헤드를 없애면서 굉장히 고품질의 비디오를 전송 할 수 있게 된다.
방화벽
방화벽은 특정 기준을 충족하는 트래픽을 차단하는 장치다.
원하지 않는 트래픽을 차단해서 네트워크를 안전하게 유지하는게 목적
방화벽은 실제 네트워크의 다양한 계층에서 작동할 수 있다.
어플리케이션 계층의 트래픽 검사를 수행 할 수 있는 방화벽과
IP 주소의 차단 범위를 다루는 방화벽이 있다.
'프로그래밍 > 네트워크' 카테고리의 다른 글
[Coursera Google] All layer working (0) | 2020.12.11 |
---|---|
[Coursera Google] The Application Layer (0) | 2020.12.11 |
[Coursera Google] The Transport Layer 2 (0) | 2020.12.10 |
[Coursera Google] The Transport Layer (0) | 2020.12.08 |
[Coursera Google] The Network Layer - Routing (0) | 2020.12.07 |