TCP( Transmission Control Protocol )
일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 된다.
TCP는 신뢰성있는 데이터 전송을 지원하는 연결지향형 프로토콜이다.
메세지들이 각단의 응용 프로그램들에 의해 교환되는 시간동안 연결이 확립되고 유지되는 것을 의미한다.
TCP는 IP가 처리할 수 있도록 메세지를 여러 개의 패킷들로 확실히 나누고, 반대편에서는 완전 메세지로 패킷들을 재조립할 책임이 있다.
OSI 통신모델에서, TCP는 4계층인 트랜스포트 계층에 속한다.
연결지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작한다.
TCP에서 사용하는 포트번호의 수는 0 ~ 65535(2 ^ 16) 이다.
흐름제어와 혼잡 제어를 지원하며 데이터의 순서를 보장한다.
TCP는 UDP에 비해 속도가 느리다는 단점이 있다.
TCP는 대부분의 웹 HTTP통신, 이메일, 파일전송에 사용된다.
Q . TCP는 패킷을 어떻게 추적 및 관리하는가?
데이터는 패킷 단위로 나누어 같은 목적지(IP 계층)로 전송된다.
.
UDP ( User Datagram Protocol )
데이터를 데이터그램 단위로 처리하는 프로토콜
데이터 그램 : 독립적인 관계를 지니는 패킷
UDP는 비연결형 프로토콜이다. 즉, 연결을 위해 할당되는 논리적인 경로가 없다.
그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
TCP처럼 '혼잡 제어'를 하지 않기 때문에 TCP보다 빠르다는 장점이 있다.
UDP는 RTP,Multicast, 멀티미디어, DNS 등의 해결에서 사용된다.
21.04.13 추가+
TCP의 대안으로, IP와 같이 쓰일 땐, UDP/IP라고도 부른다.
TCP와 마찬가지로, 실제 데이터 단위를 받기 위해 IP를 사용한다. 그러나 TCP와는 달리 메시지를 패킷으로 나누고, 반대편에서
재조립하는 등의 서비스를 제공하지 않는다.
여러 컴퓨터를 거치지 않고 데이터를 주고 받을 컴퓨터끼리 직접 연결할 때, UDP를 사용한다.
UDP를 사용해 목적지(IP)로 메시지를 보낼 수 있으며, 컴퓨터를 거쳐 목적지까지 도달할 수 있다. (하지만, 도착하지 않을 가능성도
존재한다..! )
정보를 받는 컴퓨터는 포트를 열어두고, 패킷이 올 때까지 기다리며 데이터가 오면 모두 다 받아들인다. 패킷이 도착했을 때 출발지에 대한 정보(IP&PORT)를 알 수 있다.
UDP는 이런 특성 때문에 비신뢰적이고, 안정적이지 않은 프로토콜이다. 하지만, TCP보다 속도가 매우 빠르고 편해서 데이터 유실이 일어나도 큰 상관이 없는 스트리밍이나 화면 전송에 사용된다.
TCP/IP
TCP/IP는 2개의 계층으로 이루어진 프로그램이다.
상위 계층인 TCP는 메시지나 파일들을 좀 더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일과 수신된 패킷들을
원래의 메시지로 재조립하는 일을 담당한다.
하위 계층인 IP는 각 패킷의 주소 부분을 처리함으로써, 패킷들이 목적지에 정확하게 도달할 수 있게 한다.
네트워크 상의 각 게이트웨이는 메시지를 어느 곳으로 전달해야 할 지를 알기 위해 메시지의 주소를 확인한다.
한 메시지가 여러 개의 패킷으로 나뉘어진 경우, 각 패킷들은 서로 다른 경로를 통해 전달될 수 있으며 그것들은
최종 목적지에서 재조립된다.
TCP/IP는 통신하는데 있어서 클라이언트/서버 모델을 사용하는데 컴퓨터 사용자의 요구(Client)에 대응하여 네트워크 상의 다른 컴퓨터(Server)가
웹 페이지를 보내는 식의 서비스를 제공한다.
TCP/IP는 본래 점대점 통신을 하는데 이는 각 통신이 네트워크 상의 한 점으로부터 시작되어 다른 점 또는 호스트 컴퓨터로
전달된다는 것을 의미한다.
21.04.13+
패킷 통신은 망이 끊어질 것을 대비하여 효율적인 방법을 찾은 것이다.
이럴 때, 내용이 유실될 가능성이 존재하긴 하지만, 도착지에서 이를 정렬하고 빠진 부분이나 잘못된 부분이 있다면 다시 요청하면 된다.
오늘날 인터넷 통신의 대부분은 패킷통신을 기본으로 하고 있다. TCP/IP는 이러한 패킷 통신을 위한 인터넷의 규약이다.
IP는 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할을 한다. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고
보내는 데 집중을 한다.
TCP는 IP보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하고 줄을 세우고, 다시 요청한다. 두 방식의 조합을 통하여 인터넷 데이터 통신을 하는 것을 TCP/IP 라고 부르는 것이다.
국제표준화기구 IOS에서는 상호 이질적인 네트워크간의 연결에서 호환성의 결여를 막기 위해, OSI(Open System Interconnection)
모형을 개발했다.
실제 사용되는 TCP/IP는 OSI참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 모형이다.
즉, 네트워크 전송시에, 데이터 표준을 정리한 것이 OSI 7계층, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층이다.
LAYER1 네트워크 연결 계층 (Network Access Layer)
데이터 단위 : 프레임
전송 주소 : MAC( Media Access Control Address )
물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의.
논리주소 (IP주소 등)이 아닌 물리주소 (ex. MAC 주소)를 참고해 장비간 전송
MAC주소란 컴퓨터의 하드웨어 주소를 의미합니다.
기본적으로 에러검출/패킷의 프레임화를 담당한다.
프레임단위의 데이터 구성
-> 최종적으로 데이터 전송을 하기 전, 패킷헤더에 MAC주소와 오류 검출을 위한 부분을 첨부
LAYER2 인터넷 계층 ( Internet Layer)
데이터 단위 : 패킷
전송 주소 : IP
네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공한다.
단말을 구분하기 위해 논리적인 주소 (Logical Address) IP를 할당
출발지와 목적지의 논리적 주소가 담겨있는 IP datagram이라는 패킷으로 데이터를 변경한다.
데이터 전소을 위한 주소를 지정한다.
라우팅 기능을 처리한다.
-> 경로 설정
최종 목적지까지 정확하게 연결되도록 연결성 제공
패킷단위의 데이터 구성
-> 세그먼트를 목적지까지 전송하기 위해 시작 주소와 목적지의 논리적 주소를 붙인 단위
ex) IP, ARP, ICMP
LAYER3 전송 계층 (Transport Layer)
데이터 단위 : Segment
전송 주소 : Port
통신 노드 간의 연결 제어 및 자료 송수신을 담당한다.
애플리케이션 계층의 세션과 데이터그램 통신서비스 제공한다.
세그먼트 단위의 데이터 구성
-> 실질적인 데이터 전송을 위해 데이터를 일정 크기로 나눈 것. 발신, 수신, 포트주소, 오류검출코드가 붙게된다.
ex) TCP, UDP, RTP, RTCP 등
LAYER4 응용 계층 (Application Layer)
데이터 단위 : Data/Message
사용자와 가장 가까운 계층으로, 사용자가 소프트웨어 Application과 소통할 수 있게 해준다.
응용프로그램들이 데이터를 교환하기 위해 사용되는 프로토콜
사용자 응용프로그램 인터페이스를 담당
ex) 파일 전송, 이메일, FTP, HTTP, SSH ,DNS, SMTP 등
용어 정리
* 패킷 : 정보를 보낼 때 특정 형태를 맞추어 보낸다. 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해서 전송되는 데이터 조각.
인터넷 내에서 데이터를 보내기 위한 라우팅을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송 하는데, 이 조각을 패킷이라고 한다.
* 3-way handshaking :
데이터를 전송하기 전에 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다. ( goodgid.github.io/TCP-IP-3Way-4Way/#tcp-3-way-handshake )
참고:
velog.io/@jehjong/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%B8%ED%84%B0%EB%B7%B0-TCPIP-4%EA%B3%84%EC%B8%B5
'CS > Network' 카테고리의 다른 글
HTTP와 HTTPS (0) | 2021.04.13 |
---|---|
OSI 7계층 (0) | 2021.04.13 |
HTTP Method (0) | 2021.04.13 |
URI - URL 그리고 URN (0) | 2021.04.12 |
HTTP Keep Alive (0) | 2021.04.12 |