CodeStates/블로깅 챌린지
[네트워크] 심화 - TCP/IP
novem
2023. 3. 6. 11:29
1. TCP/IP
1-1. 네트워크의 시작
- 지금 우리가 사용하는 IP 기반의 네트워크인 인터넷 프로토콜은 미 국방성에서 1969년 진행했던 아르파넷(ARPANET) 프로젝트에서 시작
- 기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축
1-1.1) 회선교환 방식
- 패킷교환 방식은 기존에 전화에서 사용했던 회선교환 방식의 단점을 보완한 방식
- 회선교환 중간에서 발신자와 수신자를 연결해주는 오퍼레이터가 존재
- 다소 비효율적 (즉시성이 떨어짐)
- 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결
- 연결하고 싶은 상대가 다른 상대와 연결중이라면, 상대방은 이미 다른 상대와의 전용선과 연결되어 있기 때문에 그 연결이 끊어지고 나서야 상대방과 연결할 수 있다.
- 특정 회선이 끊어지는 경우에는 처음부터 다시 연결을 성립해야 한다.
1-1.2) 패킷교환 방식
- 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식
- 각 패킷에는 출발지와 목적지 정보가 있고 이에 따라 패킷이 목적지를 향해 가장 효율적인 방식으로 이동할 수 있다.
- 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.
- 인터넷 프로토콜(IP)은 출발지와 목적지의 정보를 IP 주소라는 특정한 숫자값으로 표기하고 패킷단위로 데이터를 전송하게 되었다.
1-2. IP/IP Packet
- 인터넷 통신의 기본이 되는 IP(인터넷 프로토콜)
1-2.1)IP 주소 부여
- IP 주소를 컴퓨터에 부여하여 통신
- IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달
1-2.2) IP 패킷 정보
- IP 패킷은 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.
1-2.3) 클라이언트 패킷 전달
- 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달
- 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있다.
1-2.4) 서버 패킷 전달
- 서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야 한다.
- 서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.
1-2.5) IP 한계
비연결성 | - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 서버의 상태를 파악할 방법이 없어서 그대로 패킷을 전송한다. |
비신뢰성 | - 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 사라질 수 있다. - 전달 데이터의 용량이 클 경우 패킷 단위로 나눠 데이터를 전달하는데, 패킷들이 중간에 서로 다른 노드를 통해 전달될 수 있어서 패킷의 순서를 보장할 수 없다. |
1-3. TCP/UDP
- 네트워크 프로토콜 계층은 OSI 7계층과 TCP/IP 4 계층으로 나눌 수 있다.
- IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에, IP 프로토콜의 한계를 보완할 수 있다.
- TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었다.
- TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않다.
- 실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가까움
1-3.1) OSI 7계층과 TCP/IP 4계층
HTTP 메시지가 생성되면 Socket을 통해 전달
소켓(Socket)? 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결부
1-3.2) TCP/IP 패킷 정보
- TCP 세그먼트에 포함되는 정보
- IP 패킷의 출발지 IP
- 목적지 IP 정보를 보완할 수 있는 정보
- 출발지 PORT
- 목적지 PORT
- 전송 제어
- 순서
- 검증 정보
1-3.3) TCP 특징
- 전송 제어 프로토콜(Transmission Control Protocol)이다.
- 연결 지향 - TCP way handshake (가상 연결)
- TCP 3 way handshake
- 3 way handshake를 사용하는 연결지향형 프로토콜
- 연결 방식
- 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냄
- 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송
- 클라이언트가 다시 ACK으로 응답하기를 기다림
- 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있음
- 만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않음
- 현재에는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도 함
- 데이터 전달을 보증한다.
- 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려줌
- 순서를 보장한다.
- 만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있다.
- 같은 계층에 속한 UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜 신뢰할 수 있는 프로토콜
1-3.4) UDP 특징
- 사용자 데이터그램 프로토콜 (User Datagram Protocol)
- IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
- 체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
- 하얀 도화지에 비유(기능이 거의 없음)
- 커스터마이징이 가능하다는 장점
- 비 연결지향
- 데이터 전달 보증 하지 않음
- 순서 보장 하지 않음
- 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스(ex. 실시간 스트리밍)에 자주 사용됨
TCP | UDP |
연결지향형 프로토콜 | 비 연결지향형 프로토콜 |
전송 순서 보장 O | 전송 순서 보장 X |
데이터 수신 여부 확인함 | 데이터 수신 여부 확인하지 않음 |
신뢰성 높지만 속도 느림 | 신뢰성 낮지만 속도 빠름 |