IP
통신과 이를 보안하기 위한 TCP
/UDP
에 대해 학습합니다.IP
의 비순서성, 비신뢰성에 대해 이해한다.TCP
의 3 way handshake 및 그와 비교되는 UDP
에 대해 이해한다.즉시성이 떨어지고 비효율 적이던 회선교환방식(전화 교환원이 하던 방식) -> 패킷교환 방식으로 발전했다.
패킷 교환 방식 : 데이터를 패킷(Packet)이라는 작은 단위로 잘게 쪼개서 전송하는 방식.
각 패킷에는 데이터, 출발지, 목적지 정보(IP 주소)가 있으며, 이에 따라 패킷이 목적지로 효율적으로 이동 가능함. 특정 회선이 전용선으로 할당되지 않아서 빠르고 정확하게 데이터 전송 가능.
데이터를 전송하는 동안에만 네트워크 자원을 사용한다.
정보 전달의 단위인 패킷은 여러 통신 지점(Node)을 연결하는 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어된다. 이 방식은 통신 기간 동안 독점적인 사용을 위해 두 통신 노드 사이를 연결하는 회선 교환 방식과는 달리 짤막한 데이터 트래픽에 적합하다.
패킷 교환방식의 장점
패킷의 구성
패킷은 전송하고자 하는 데이터의 한 블록(페이로드Payload) 과 주소지 정보(발신지 주소, 목적지 주소), 관리정보(헤더Header, IPv6에서와 같이 망이 패킷을 목적지까지 전달하는데 필요한) 로 구성된다. 각각의 패킷은 일정한 헤더가 필요하며 패킷은 적절한 크기로 나뉜다.
🔗 참고 사이트
코드스테이츠 유어클래스
Packet (MDN)
패킷 교환(Wikipedia)
컴퓨터에 IP(인터넷 프로토콜) 주소를 부여하여 통신하며, IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달함
클라이언트 패킷 전달 :
클라이언트 -> 패킷 단위로 데이터 전송 -> 노드들이 목적지 IP 에 도달하기 위해 서로 데이터를 전달함.
서버 패킷 전달 :
서버 -> 동일하게 IP 패킷 단위로 데이터 전송 -> 노드들이 발신지 IP 로 데이터 전달함.
1. 비연결성
패킷을 받을 대상이 없거나 서비스 불가능 상태여도, 클라이언트에서 서버의 상황을 파악할 수 없어 패킷을 그대로 전송함
데이터의 목적지에 실제로 도착할 수 있는지 알 수 없음.
2-1. 비신뢰성 - 패킷이 소실될 수 있음
중간에 있는 서버에 장애가 생겨 데이터가 소실되어도 클라이언트에서 파악 불가능함.
2-2. 비신뢰성 - 패킷이 순서대로 도착하지 않을 수 있음
전달할 데이터의 용량이 클 경우 패킷단위로 작게 나눠서 데이터를 전달하게 되는데, 이때 패킷들은 중간에 서로 다른 노드들을 거쳐 전달될 수 있음. 이렇게 되면 클라이언트가 의도하지 않은 순서대로 서버에 패킷이 도착할 수 있음.
TCP (전송 제어 프로토콜) : 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜
데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해줌. TCP의 역할은 에러가 없이 패킷이 신뢰할 수 있게 전달 되었는지 보증해 주는 것이다.
동시 제어가 가능함. 이는 초기 요청이 작게 시작해도 컴퓨터들과 서버들의 대역폭의 깊이가 증가해도 네트워크가 지원할 수 있다는 것을 뜻한다.
실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가까움.
1. TCP 3 way handshake
TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜.
클라이언트가 서버로 접속해도됨? 하고 SYN 패킷 보냄
-> 서버가 SYN 패킷 받고 접속해도 됨! 하는 ACK와 SYN이 설정된 패킷을 보냄
-> 클라이언트가 서버에게 다시 그럼 접속할게! 하는 ACK 를 보내면 이후로 연결이 성립되며 데이터 전송 가능.
만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않음.
현재에는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도 함.
2. 데이터 전달 보증
TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있음.
3. 순서보장
만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 순서대로 패킷 전송을 요청할 수 있음.
이를 통해 IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있음.
UDP 는 신뢰성이 적지만 속도가 빨라서 유튜브 등에 많이 쓰임.