1. OSI 계층
OSI 7Layer 의 각 계층적 구조는 다음과 같다.
![](https://velog.velcdn.com/images%2Fjeohong%2Fpost%2F6c4170fc-0d97-4ca0-b9b7-36a5b0af9f3c%2FR1280x0.png)
OSI 7Layer
Application 계층부터 Transport 계층까지를 Network Edge 라고 하며,
Network 계층부터 Physcial 계층까지를 Nerwork Core 라고 한다.
1) Network Edge
- 인터넷의 말단 부분
- 사용자들이 존재하고, 사용자들이 직접 접할수 있는 네트워크
- 기업 에서 관리되는 부분
2) Network Core
- 네트워크 엣지들을 연결해 주기 위해 중간에 위치한 네트워크
- ISP 가 관리하는 부분
- Router , Switch 등등..
- Physical Layer ( 물리 계층 )
- 개별 시스템간 비트단위의 신호를 전송하는 일을 수행하며, 비트 자체에 대한 의미에는 관여하지 않는다
- 대체적으로 케이블 등의 물리적인 형태로 나타낸다
- Hub , UDP 케이블 ( 랜선 ) 등등..
- Data Link Layer ( 데이터 링크 계층 )
- 시스템을 H/W 적으로 구별하며, Frame (프레임) 형태로 Data를 전송하는 역할을 담당
- CRC Error 점검을 통해 손상을 점검한다
- S/W 와 H/W 의 혼용으로 나타낸다
- 랜카드, 브릿지, L2 스위치 등등..
- Network Layer ( 네트워크 계층 )
- 개별 시스템을 논리적으로 구별하는 역할 수행
- 여러 프로토콜의 Routing 을 담당
- IP , ICMP , IPsec, ARP 등의 프로토콜
- H/W 장비 : Router , L3 스위치 등등..
- Transport Layer ( 전송 계층 )
- 상위 프로토콜을 구분하고 패킷의 순서와 손상을 보장
- 수신자가 발신자에게 응답을 전송하는 역할을 수행
- TCP, UDP, DCCP 등등..
- Session Layer ( 세션 계층 )
- 세션 열결의 설정 과 해제, 세션 메세지 전송 등의 역할을 수행
- 인증, 허가, 세션 회복
- TLS, SSL, 넷 바이오스
- Presentation Layer ( 표현 계층 )
- 네트워크의 데이터 번역 역할 수행
- 데이터 변환, 압축, 암호화 및 암호해제
- Application Layer ( 응용 계층 )
- 전송 계층 프로토콜을 사용하여 호스트 간 연결을 확립
- IP 를 통하는 프로세스간 통신 접속을 위해 설계
- 사용자 인터페이스 로써, 데이터와 그림을 사용자에게 보여주는 역할 수행
- HTTP, SMTP, SSH, FTP 등등..
※ OSI 7 계층에서는 투명성이 존재해야 한다.
즉, 상위 계층은 하위 계층에서 어떤일이 일어나는지 알 필요가 없어야 한다.
- 투명성 : 존재하지만 보거나 알아야 하는 필요가 없는것을 의미한다
ex) 내 PC와 Naver 사이의 패킷교환이 존재하지만, 사용자가 패킷 교환 과정을 알아야할 필요가 없는것
TCP/IP 4Layer
- 인터넷 프로토콜 스택 이라고도 불리운다
![](https://velog.velcdn.com/images%2Fjeohong%2Fpost%2Fb718e181-20e0-497b-9a45-717992e80856%2F234.png)
- Link Layer ( 링크 계층 )
- 네트워크 Routing 경로상 한 노드에서 다른 노드로 패킷을 이동하기 위해 존재하는 계층
- 링크 계층의 통신단위를 Frame ( 프레임 )이라고 함
- Ethernet, PPP, FDDI
=> 국내의 경우 PPP 와 FDDI 는 거의 사용하지 않는다
PPP 란 Point to Point Protocol 의 약자로, 시리얼 케이블, 전화선 등 전화선으로 통신하는것을 의미한다
FDDI 란 근거리 통신망의 데이터 전송 표준으로, 군용 이나 의료용 장비에 주로 사용된다
- Network Layer ( 인터넷 계층 )
- 한 호스트에서 다른 호스트로 Datagram ( 데이터그램 ) 을 Routing 하는 역할을 수행
- 출발지와 목적지 사이에서 데이터그램이 이동하는 경로를 결정하는 라우팅 프로토콜 제공
- IP , ICMP 등..
- Transport Layer ( 전송 계층 )
- 클라이언트와 서버간 Application 계층 메세지를 전송하는 역할을 수행
- 전송 계층의 통신단위를 Segment ( 세그먼트 ) 라고 함
- TCP 프로토콜 , UDP 프로토콜 등..
=> TCP : 연결지향 서비스 제공
UDP : 비연결형 서비스 제공
- Application Layer ( 응용 계층 )
- 여러 종단 시스템에 분산되어 있으며, 한 종단 시스템의 Application 에서 다른 Application 과 정보 패킷을 교환하기 위해 사용되는 계층
- 응용 계층의 통신단위를 Message ( 메세지 ) 라고함
- HTTP, SMTP, FTP 등..
예전에 정리해 놓은 개념이 있어 대체한다.
2. TCP
TCP는 OSI 7계층중 전송 계층에서 사용하는 프로토콜이다.
3 way handshake 를 통해 연결을 하며
4 way handshake 를 통해 연결을 종료한다.
- -> 서로의 확인과정이 있기때문에 당연 1:1 통신만 가능하며, 신뢰성 연결을 할수있다 하지만 UDP 에 비해 확인과정을 거치기 때문에
연결 속도 전송 속도가 느릴수밖에 없다.
2 - 1. 연결과정
![https://blog.kakaocdn.net/dn/cEHPMZ/btq5G2ry7ft/HQ10K8oO8Rmp7Sk1oFBpVk/img.png](https://blog.kakaocdn.net/dn/cEHPMZ/btq5G2ry7ft/HQ10K8oO8Rmp7Sk1oFBpVk/img.png)
-
연결을 위해 SYN 플래그 전송
-
연결 확인을 위해 SYN + ACK 전송
-
ACK를 전송하여 연결 확인
2 - 2. 연결 종료
![https://blog.kakaocdn.net/dn/y7I70/btq5GZVQI0C/uCQakJnfqvLqqcRwP5xINk/img.png](https://blog.kakaocdn.net/dn/y7I70/btq5GZVQI0C/uCQakJnfqvLqqcRwP5xINk/img.png)
-
사용 다했으니 FIN + ACK 전송
-
서버는 클라이언트에게 확인 완료를 위해 ACK 플래그 전송
-
서버는 클라이언트에게 아무 반응이 없다면 FIN + ACK 전송
-
클라이언트는 서버에세 종료 확인을 위해 ACK 플래그 전송후 연결 종료
2 - 3. TCP 의 헤더
![https://blog.kakaocdn.net/dn/dmjRHJ/btq5FTu4fcT/KunqcaG3hGEK6YaGknkMqK/img.png](https://blog.kakaocdn.net/dn/dmjRHJ/btq5FTu4fcT/KunqcaG3hGEK6YaGknkMqK/img.png)
- ** Source Port**: 출발지의 포트, 즉 데이터를 보내는 컴퓨터의 포트 정보입니다. 컴퓨터가 갖을 수 있는 포트는 65536개이므로 사이즈가 2바이트인것을 확인하세요.
- ** Destination Port**: 반대로 목적지의 포트입니다.
- ** Sequence Number** : 송신 데이터의 일련 번호를 담고 있습니다.
- Acknowledgement Number : 그전의 데이터를 잘 받았다는 표시로 상대방이 다음에 전송할 일련번호를 담고 있습니다. 줄여서 ACK라고 하겠습니다.
- ** HLEN(Header Length)** : 헤더의 정보를 담고 있습니다. 4 bits의 워드 단위입니다. 헤더의 길이는 최소 20바이트 ~ 60바이트까지입니다.
- ** Reserved** : 예약된 비트입니다. 아직 사용하지 않습니다. 나중을 위해서 남겨두는 비트인 셈이지요.
- ** Control Flags**
제목 없음
- Window Size : 수신자에서 송신자로 보내는 수신자의 윈도우 사이즈입니다. 즉, 수신 버퍼의 여유공간 크기를 의미하게 되지요. 송신자는 이 윈도우 사이즈 범위 내에서 수신측의 수신 확인(ACK)을 확인하지 않고 연속적으로 데이터를 보낼 수 있습니다.
- Checksum : 오류를 검사하기 위한 필드입니다. 전체 데이터가 오류가 나 변형되었는지 확인합니다.
- Urgent Pointer : 긴급 데이터의 위치값을 담고 있습니다.
3. UDP
- 비연결성 프로토콜 로서 송신자는 수신자에게 데이터 전송만 할뿐 수신자는 확인과정을 거치지 않는다
- 이러한 특징 때문에 전송 속도가 TCP 보다 훨씬 빠른것을 알수있다.
3 - 1. UDP 헤더
![https://blog.kakaocdn.net/dn/tajhm/btq5yCunCUo/rYnpfejueVWrtwK1KKyt50/img.png](https://blog.kakaocdn.net/dn/tajhm/btq5yCunCUo/rYnpfejueVWrtwK1KKyt50/img.png)
- Source Port / Destination Port
→ Source Port는 메시지를 보내는 측에서 통신을 위해 사용하는 Port 번호
→ Destination Port는 목적지, 즉 메시지를 받는 측의 통신 Port 번호
→ 헤더와 데이터를 합한 사용자 데이터그램의 전체 길이를 정의합니다. UDP 데이터그램의 헤더인 8바이트부터 65507바이트 사이의 값이 됩니다.
→ 헤더와 데이터를 모두 포함한 사용자 데이터그램 전체에 대해 오류를 탐지하기 위해 사용됩니다.
- TCP 와 UDP 차이점
![https://blog.kakaocdn.net/dn/bSzB8H/btq5BlTW8yQ/nat3iAoUoUl8DTqOkB3tD0/img.png](https://blog.kakaocdn.net/dn/bSzB8H/btq5BlTW8yQ/nat3iAoUoUl8DTqOkB3tD0/img.png)
출처
https://joycecoder.tistory.com/20
https://velog.io/@hidaehyunlee/TCP-와-UDP-의-차이
https://hwan-shell.tistory.com/271
https://swalloow.tistory.com/77