※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다.
1. OSI 7계층
통신 접속에서 완료까지 과정을 7단계로 정의한 국제 통신 표준 규약.
1)OSI 7계층
- 물리 : 전송하는데 필요한 기능을 제공
- 전기적, 기계적으로 데이터를 송수신 한다. 즉, 1과 0으로 이루어진 비트르 송수신 하는 계층이라고 볼 수 있다.
- 통신 케이블, 허브
- 데이터링크 : 송/수신 확인, MAC주소를 가지고 통신함
- 물리적인 네트워크 사이에 Data를 전송하는 계층
- MAC주소를 통해 물리계층을 통해 송수신 되는 정보의 오류, 흐름제어
- 브릿지, 스위치
- 네트워크 : 패킷을 네트워크 간의 IP를 통해 데이터 전달
- 네트워크를 논리적으로 구분하고 연결하는 계층
- 라우팅
- 전송 : 두 host 시스템으로부터 발생하는 데이터 흐름 제공
- TCP/UDP 프로토콜을 통해 통신을 활성화 한다.
TCP - 신뢰성, 연결지향형, segment
UDP - 비신뢰성, 비연결지향형, Datagram, 실시간 - 양 끝의 사용자들이 데이터를 주고 받을 수 있다.(단대단 통신)
- TCP/UDP 프로토콜을 통해 통신을 활성화 한다.
- 세션 : 통신 시스템 사용자간의 연결을 유지 및 설정함
- API, Socket(연결(세션)관리/ 지속, 동기화)
- TCP/IP 세션을 만들고 없애는 책임
- 표현 : 세션 계층 간의 주고 받는 인터페이스를 일관성있게 제공
- JPEG, MPEG, GIF등 파일 인코딩, 압축, 암호화
- 응용 : 사용자가 네트워크에 접근할 수 있도록 서비스 제공
- HTTP, FTP, DNS등 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스 제공
2)TCP/IP 4계층
통신에 실제 사용되는 계층(프로토콜 스택)은 다음과 같이 이루어진다.
- 네트워크 액세스 계층( OSI 7-> 물리+데이터링크 )
- 물리적인 주소로 MAC을 사용한다.
- LAN, 패킷망 등에 사용된다.
- 패킷 송수신을 담당하고, 에러검출/ 패킷 프레임화 등을 담당
- 인터넷계층( OSI 7-> 네트워크 )
- OSI 7계층 중 네트워크 계층으로 통신 노드간 IP패킷 전송을 담당하는 라우팅 기능을 담당한다.
- 프로토콜 - IP, ARP, RARP
- 전송 ( OSI 7-> 전송 )
- 통신 노드간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당함.
- 프로토콜 - TCP, UDP
- 응용 ( OSI 7-> 세션+표현+ 응용계층 )
- 다른 계층의 서비스에 접근할 수 있게 함
- TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
- 프로토콜 - FTP, HTTP, SSH
3) OSI 7계층 vs TCP/IP 4계층
- TCP/IP 프로토콜은 OSI모델보다 먼저 개발되었다.
- 두 모델은 모두 계층형 구조인데, TCP/IP는 인터넷 개발 이후 계속하여 표준화되어 신뢰성이 우수한 반면, OSI 7계층은 실제로 구현된 예가 거의 없어 신뢰성이 저하되었다.
- 따라서 통신 자체에는 TCP/IP포로토콜이 사용되고, OSI 7계층 모델은 장비개발과 통신을 어떻게 표준으로 잡을지 정하는데 사용된다고 한다.
- OSI 7계층을 사용하는 이유
통신이 일어나는 과정을 단계별로 파악하여, 문제 발생시 트러블 슈팅이 용이하다.
4) 프로토콜
[1] ARP(Address Resolution Protocol)
IP 주소를 이용해 상대방의 MAC 주소를 알아내는 프로토콜로 ARP 요청/응답 완료되면 ARP 테이블에 각 노드의 ARP 정보를 저장한다.
계층 2(데이터 링크)프로토콜을 이용해 데이터를 전송하려면 목적지 호스트의 MAC주소가 필요하다. 자신의 주소와 MAC주소는 쉽게 얻을 수 있지만 수신자의 주소는 다르다. 주어진 IP주소를 사용하여 MAC주소를 구하는 기능이 ARP가 담당한다.
- 우선 호스트A는 호스트B의 MAC주소를 모르기 때문에 ARP request라는 패킷을 브로드캐스트로 전송한다.
- 패킷을 받은 호스트들 중 목적지 주소(IP)가 자신이 아니라면 무시한다
- 호스트B는 자신의 IP주소와 ARP request의 목적지 주소가 같기 때문에 ARP Reply에 자신의 MAC주소를 추가하여 전송한다.
- 호스트 A는 가장 최근에 얻은 IP주소와 MAC 주소 매핑값을 보관하는 캐시테이블정보를 이용한다.
- 또한 브로트캐스트 과정에서 A의 패킷을 수행한 B, X, Y, Z는 A의 정보를 얻을 수 있어 ARP테이블에 저장하여 관리한다.
개인의 PC에서도(윈도우 기준) 위와같이 cmd창을 열어 arp -a 명령어를 입력하면 ARP캐시 테이블을 확인할 수 있다.
[2] RARP(Reverse Address Resolution Protocol)
RARP는 ARP와 반대로 MAC주소 이용해 IP 주소를 찾는 기능을 한다. MAC주소는 아는데 IP주소를 모르는 일이 있을까?디스크같은 저장시스템이 존재 하지 않는다면 IP주소를 보관할 방법이 없다. 이런경우 시스템 부팅시 자신의 MAC주소와 IP주소의 매핑 값을 보관하는 호스트로 부터 IP 주소를 얻어야 한다.
- 디스크가 없는 호스트A는 MAC주소를 매개로 BroadCast함
- RARP기능을 전담하는 서버를 제외한 나머지 호스트들은 무시한다.
- RARP기능을 전담하는 서버는 MAC주소에 맞는 IP주소를 전송한다.
[3] TCP(Transmission Control Protocol)
TCP는 연결형 서비스로 가상회선을 통해 같은 경로로 패킷통신을 하는 특성이 있습니다.
- 연결형 서비스(전이중, 점대점)
- 전화통화와 같은 방식으로 연결을 설정한 후에 데이터를 주고받는 프로토콜이다.
- 이와관련된 기술 중 하나는 3-way handshaking, 4-way handshaking이다.
- 전송이 양방향으로 동시에 일어날 수 있으며(Full-Duplex) 1:1통신(점대점)이다.
- 흐름제어, 혼잡제어
- 데이터 전송 성공시 ACK를 전송하고 Timeout을 활용하여 패킷 재전송을 하며 흐름을 제어한다.
- 통신양이 많으면 패킷의 전송량을 조절하여 혼잡도를 낮춘다.
- 신뢰성이 높은 전송
- 위와같은 이유로 신뢰성이 높은 서비스이며, listen서버, P2P, Socket통신등에 사용된다.
TCP의 단점은 다음과 같다.
- 데이터 통신 전에는 반드시 연결이 형성되어야한다.
- 1 : 1 통신만 가능하다.
- 고정된 통신 선로가 최단선이 아닐경우 UDP보다 속도가 느리다.
■ 3Way handshake
TCP통신을 위한 연결과정으로 3번의 요청/응답 과정을 통해 연결하는 과정이다.
초기에 서버는 요청을 받을 수 있는 listen상태여야 한다.
- 클라이언트는 서버와 연결하기 위해서 SYN 데이터를 보낸다. seq는 SYN를 순서번호로 랜덤으로 숫자(x)를 전송한다.
- 서버는 이에 대해 요청을 받았다는 것을 클라이언트에게 알리기 위해 SYN메세지에 대한 응답으로 순서번호에 1을 더한 x+1을 ACK메세지로 보내고 서버도 클라이언트와 연결을 하기 위해 랜덤으로 순서번호(y) SYN메세지를 함께 보낸다.
- 클라이언트가 이 메세지를 잘 받았으면 서버가 보낸 SYN메세지에 대해 ACK메세지로 응답하며 y+1을 송신하며 3way handshake를 마치고 데이터 전송을 한다.
■ 4Way handshake
3way handshake와 달리 4way handshake는 통신을 종료하기 위해 사용된다.
- 먼저 Client가 연결을 종료하기 위해 FIN메세지를 보낸다.
- 이 메세지를 보냄으로써 이 통신과정에서 클라이언트는 서버에게 다시 메세지를 보낼 수 없다.
- 이에 대해 Server는 종료를 확인했다는 표현으로 ACK메세지를 보낸다.
- 이 메세지를 받은 클라이언트는 클라이언트가 데이터를 모두 보내고 FIN메세지를 보낼 것을 기다린다.
- Server가 모든 데이터를 전송했을 경우 FIN메세지를 보내 통신의 종료를 알린다.
- 서버가 보낼 데이터를 모두 전송했다면 FIN메세지를 보낸다.
- 종료 메세지를 받은 클라이언트는 이에대한 확인 메세지로 ACK 메세지를 보내 통신의 종료를 알린다.
- ACK메세지를 받은 서버는 연결을 종료한다.
- 반면 클라이언트는 서버로 부터 받지 못한 데이터가 있을 것을 대기해 잠시 기다리는 과정을 거친다.
[4]UDP(User Datagram Protocol)
- 비연결형 서비스
- 정보를 주고 받을 때 송/수신의 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 전송하는 프로토콜
- 신뢰성이 낮은 서비스
- 흐름제어, 혼잡제어기능이 없기 때문에 신뢰성이 낮다.
- 상대적으로 빠른 통신
- 흐름제어, 혼잡제어기능이 없기 때문에 상대적으로 빠르다.
- 이런 특징으로 신뢰성보다는 연속성이 중요한 서비스에 사용( 화면이 깨져도 실시간으로 나올 수 있음)
- UDP 서버의 특징
- 연결이 없어 서 서버와 클라이언트 구분이 없다.
- IP기반으로 데이터를 전송한다.
- N:M 통신이 가능하다
- 데이터그램 단위를 초과하면 나누어 보낸다.
- 흐름제어가 없어 전송여부와 오류여부를 확인 할 수 없다.
이와같이 송신 호스트가 1->2->3번 순서대로 패킷을 보냈어도각자 다른 경로로 전송되고 각 패킷마다 독립적으로 처리된다는 특징이 있습니다.
비교
TCP | UDP |
연결지향형 | 비연결지향형 |
바이트 스트림 | 메세지 스트림 |
혼잡제어, 흐름제어 | X |
순서보장, 상대적으로 느림 | 순서보장X, 빠름 |
신뢰성 | 신뢰성X |
세그먼트 | 데이터그램 |
HTTP, Email, File등 신뢰성 중요한 곳에 쓰임 | DNS, Broadcasting, 실시간동영상 서비스 등 |
1:1xhdtls | 1:1 OR 1:N OR N:N통신 |
https://hahahoho5915.tistory.com/15( TCP/IP 4계층)
https://ryusae.tistory.com/4(OSI 7계층 vs TCP/IP 4계층)
https://coding-factory.tistory.com/614(TCP, UDP)
https://mangkyu.tistory.com/15(UDP)
https://asfirstalways.tistory.com/356(4wayhandshake)
'ComputerScience > Network' 카테고리의 다른 글
[Network] 5. 주소창에 www.naver.com을 쳤을 때 생기는일 (0) | 2021.05.29 |
---|---|
[Network] 4. HTTP 버전 & QUIC (0) | 2021.05.28 |
[Network] 3.로드밸런싱(Load Balancing) (0) | 2021.05.27 |
[Network] 2.HTTP, HTTPS (0) | 2021.05.21 |
댓글