TCP/IP란?
TCP/IP는 패킷 통신을 위한 인터넷 규칙입니다.
처음에는 통신이 연결이 설정된 후 연결이 끊어질 때까지
회선을 완전히 배타적으로 사용했습니다.
이러한 통신 방식을 회로 통신이라고 부른다.
이때 반대편에서는
그 회선을 이용할 수 없고, 기다려야 하는 상황이 발생합니다.
회로 통신의 이 단점을 해결하기 위해 나온 방식이 패킷 통신입니다.
패킷통신은 멀티네트워크를 사용할 뿐 아니라
송신 내용을 잘게 자르고 송신합니다.
따라서 특정 회선이 끊어지거나 누가 통신할 수 없게 되는 경우
예방할 수 있습니다.
TCP와 IP의 특징을 보면,
IP는 패킷 전달을 보장하지 않습니다.
또한 패킷의 전송 순서와 수신 순서가 다를 수 있습니다.
이에 대해 TCP는 IP상에서 동작하는 프로토콜로, 데이터 전달을 보증하고 전송된 순서로 받게 해 줍니다.
간단히 말해서, TCP가 데이터 추적을, IP가 배달을 처리한다고보십시오!
TCP/IP 4계층
TCP/IP 4 계층은 애플리케이션 계층, 전송 계층, 인터넷 계층, 네트워크 액세스 계층으로 구성됩니다.
데이터 전송 중에 데이터는 사우이 계층에서 하위 계층으로 이동합니다.
이때 계층의 이동마다 필요
정보인 헤더가 추가되어 이를 캡슐화라고 합니다.
데이터를 받으면 데이터는 하위 계층에서 상위 계층으로 이동하고 각 계층 이동에 대해 추가된 헤더를 읽고 적절합니다.
작업을 수행한 후 헤더를 삭제합니다.
이것을 역 캡슐화라고합니다.
각 계층별로 좀 더 자세히 살펴봅시다!
L4 애플리케이션 계층
데이터 단위 – Data/Message
사용자에게 가장 가까운 계층이며 사용자와 소프트웨어 간의 통신을 담당하는 계층입니다.
애플리케이션이 데이터 교환에 사용되는 프로토콜.
대표적인 예로는 파일 전송, HTTP, 이메일 등이 있습니다.
L3 전송 계층
데이터 단위 – Segment
통신 노드 간의 접속 제어나 자료의 송수신을 담당합니다.
역캡슐화 프로세스는 포트 번호를 사용하여 데이터를 정확한 애플리케이션에 전달하는 역할을 합니다.
네트워크 액세스 계층과 인터넷 계층을 통해 데이터가 원하는 장비에 성공적으로 도착하면,
전송 계층은 포트 번호를 사용하여 데이터를 대상 장치의 대상 응용 프로그램으로 전송합니다.
대표적인 예로 TCP, UDP가 있습니다.
L2 인터넷 계층
데이터 단위 – Packet
네트워크의 최종 목적지까지 정확하게 연결하기 위한 연결성을 제공합니다.
단말을 구별하기 위한 논리
주소인 IP를 할당합니다.
세그먼트를 목적지로 전송하기 위해 시작 주소와 대상 논리 주소
붙여넣은 패킷 단위로 데이터를 설정합니다.
대표적인 예로 IP와 ARP가 있습니다.
L1 네트워크 액세스 계층
데이터 단위 – Frame
데이터를 전기 신호로 변환한 후 물리 주소인 MAC 주소를 활용하여 적절한 기기로 데이터를 전달하는 계층입니다.
논리 주소(IP) 대신 물리 주소(MAC 주소)를 참조하여 장비 간 데이터 전송을 가능하게 합니다.
결국 데이터 전송을 수행하기 전에 패킷 헤더에 mac 주소 부분을 첨부하여 전송합니다.
대표적인 예로 MAC이 있습니다.
TCP/IP는 이러한 레이어를 타고 데이터를 주고 받습니다.
이 과정에서 발생할 수 있는 몇 가지 문제가 있습니다.
TCP/IP 흐름 제어
수신측이 송신측보다 데이터 처리 속도가 빠르면 문제는 없지만, 송신측의 속도가 빠르면 문제가 발생합니다.
이는 수신측의 저장 용량을 초과한 후에 송신된 패킷이 손실될 수 있기 때문이다.
그렇다면 불필요한 추가 패킷 전달이 발생합니다.
플로우 제어는 송신측과 수신측의 TCP 버퍼 사이즈의 차이에 의해 발생하는 데이터 처리 속도를 해결하기 위한 기법이라고 할 수 있다.
흐름 제어의 기본 개념은 수신자가 송신자에게 자신의 상태를 계속 알리는 것입니다.
즉, 수신 측에서 데이터를 더 수신할 준비가 되었다는 피드백이 이루어지면 송신 측에서 패킷을 계속
보내는 것입니다.
Stop and Wait 방법은 매번 전송된 패킷에 대한 ACK 응답을 수신할 때 다음 패킷을 전송하는 방법이다.
패킷
하나씩 보내기 때문에 비효율적인 방법이기도 합니다.
슬라이딩 윈도우 기술은 수신측에서 설정한 윈도우 사이즈만 송신측에서 패킷을 송신할 수 있도록 하여 데이터 흐름을 동적으로 조정하는 제어 기술이다.
윈도우 크기는 TCP 버퍼에서 사용되는 부분을 제외한 데이터를 받아들일 수 있는 공간으로 수신자가 결정합니다.
창 크기는 데이터 전송 속도를 결정하는 가중치 변수라고도 합니다.
창 크기는 3way handshaking을 통해 수신 측에서 송신 측으로 확인(ACK)을 보낼 때 TCP 헤더에 넣어 전송됩니다.
윈도우는 다시 말해서 TCP 버퍼의 일정한 영역으로 간주될 수 있다.
작동 방법은 다음과 같습니다.
3hand shaking을 통해 수신측의 수용 가능한 윈도우 사이즈는 7인 것을 알 수 있었다.
보낸 사람은 다음과 같이 범위를 설정하고 0과 1의 두 프레임을 보냅니다.
슬라이딩 윈도우 구조는 크기가 전송되었습니다.
데이터 프레임만큼 감소합니다.
이 경우 수신 측에서 ACK라는 프레임을 수신하면 송신 측은 수신자가 0,1 데이터를 성공적으로 수신했음을 알게 됩니다.
보낸 사람은 해당 크기만큼 창을 오른쪽으로 확장합니다.
이상으로 TCP/IP에 대해 봤습니다.
감사합니다!
참고 블로그
https://velog.io/@rosewwross/TCPIP