Internet protocol suite
: 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜(통신규약)의 집합
: Internet protocol 기반 socket의 경우 데이터 전송 방법에 따라 TCP socket과 UDP socket으로 나누어진다.
: Internet protocol suite 중 TCP/IP가 가장 많이 쓰이기 때문에 TCP/IP protocol suite라고 불린다.
TCP/IP(Transmission Control Protocol/Internet Protocol) suite
: 네트워크에서 사용되는 통신 프로토콜의 집합
: Layer들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 Layer로 구성
(Physical Layer로 구분하면 5 Layer)
TCP/IP protocl의 탄생?
인터넷을 통해 데이터를 효율적으로 주고 받기 위해 아주 많은 문제들이 존재한다 (Ex. 하드웨어적인 시스템 구축 문제, 소프트웨어적인 알고리즘)
따라서 이러한 문제를 하나의 프로토콜의 설계로 해결하는 것이 아닌 작은 문제들로 나누어서 해결해야 효율적이고 체계적인 개발이 가능할 것이다.
문제를 영역별로 나누어서 해결하다 보니, 프로토콜이 여러 개 만들어졌지만 하나의 문제 해결을 위해 나누어진 것 뿐이므로 하나의 프로토콜이라 할 수 있다.
즉 TCP/IP 프로토콜은 인터넷 기반의 데이터 전송이라는 하나의 문제를 해결하기 위해 만들어진 프로토콜로서 총 4단계(5단계)의 프로토콜로 나뉘어 세분화하였다.
🤔 Why Application layer는 문자열을 기반으로 송수신을 할까?
헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문
curl 명령어를 이용하여 www.naver.com으로 HTTP 요청을 해서 PDU 테스팅을 해보자!
curl commands 온라인 사이트 링크
'curl www.naver.com'이란 명령어를 통해 요청하면 다음과 같은 response header를 얻을 수 있는데 모두 문자열임.
🤔 Application Layer Protocol
▶ FTP
장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
▶ SSH
보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
▶ HTTP
World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용 혹은 웹 데이터를 전달하는 데 쓰는 프로토콜
▶ SMTP
전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
▶ DNS
: 도메인 이름과 IP 주소를 매핑해주는 서버
EX) www.naver.com에 DNS 쿼리가 오면 [Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑
: 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스 가능
EX) www.naver.com의 IP 주소가 222.111.222.111에서 222.111.222.122로 바뀌었음에도 똑같은 www.naver.com이라는 주소로 서비스가 가능
▶ TELNET
사이트를 원격으로 접근하기 위한 프로토콜
▶ SNMP(Simple Network Management PRotocol)
네트워크나 시스템을 global 혹은 local level에서 원격으로 관리하기 위한 프로토콜
🤔 TCP 특징
: Connection-oriented protocol(연결지향 프로토콜) → 신뢰적
local과 remote를 연결한 후 신뢰성을 구축해서 수신 여부 확인
연결설정, 데이터 전달, 연결종료 등의 단계를 제공
: Flow control(흐름 제어)
destination에 너무 많은 traffic이 몰리는 것을 방지하기 위해 source host의 sending data rate와 destination host의 receiving data rate를 맞춘다.
즉 destination host가 데이터를 이용할 수 있는 속도로 source host가 데이터를 보내도록 맞추는 것
: Error control(에러 제어)
error 없이 destination에 도착하면 답장하는 것을 보증한다.
: Congestion Control(혼잡 제어)
네트워크에 많은 디바이스가 데이터를 한번에 보내서 traffic이 몰린다. 서로 데이터를 천천히 보내기로 약속한다.
🤔 UDP 특징
- Connectionless protocol(비연결 지향 프로토콜) → 비신뢰적
- Flow control 없음
- Error control 없음
: 체크섬(packet error 검사) 틀리면 버린다.- Congesion control(혼잡 제어) 없음
먼저 가상회선으로 연결되고 패킷이 해당 가상회선을 따라 순서대로 도착하는 것을 알 수 있다.
3, 2, 1로 이루어진 패킷이 순서도 다르고 어떠한 회선을 중심으로 가는 것이 아니라 따로따로 이동하며 순서도 다르게 도착하는 것을 알 수 있음
클라이언트와 서버가 통신할 때 다음과 같은 세 단계의 과정을 거친다.
➊ SYN 단계
➋ SYN + ACK 단계
서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄
➌ ACK 단계
클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냄
※ TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며 UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층
🤔 용어 정리
- SYN
SYNchronization의 약자, 연결 요청 플래그- ACK
ACKnowledgement의 약자, 응답 플래그- ISN
Initial Sequence Numbers의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호이다.
TCP가 연결을 해제할 때는 4-웨이 핸드셰이크(4-way handshake) 과정이 발생
🤔TIME_WAIT 상태?? - 그냥 연결을 닫으면 되지 왜 굳이 일정 시간 뒤에 닫을까?
- 지연 패킷이 발생할 경우를 대비하기 위함
패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생- 두 장치가 연결이 닫혔는지 확인하기 위해서
만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타남
🤔 용어정리
- TIME_WAIT
: 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태
: 지연 패킷 등의 문제점을 해결하는 데 쓰인다.
: CentOS6, 우분투에는 60초로 설정되어 있으며 윈도우는 4분으로 설정
: 즉, OS마다 조금씩 다를 수 있다.- 데이터 무결성(data integrity)
데이터의 정확성과 일관성을 유지하고 보증하는 것
데이터 링크 계층은 Ethernet Frame을 통해 전달받은 데이터의 에러를 검출하고 캡슐화
• Preamble: 이더넷 프레임이 시작임을 알림
• SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
• DMAC, SMAC: 수신, 송신 MAC 주소
• EtherType: 데이터 계층 위의 계층인 IP 프로토콜을 정의, 예를 들어 IPv4 또는 IPv6
• Payload: 전달받은 데이터
• CRC: 에러 확인 비트
🤔 용어 정리
- MAC 주소
: 컴퓨터나 노트북 등 각 장치에는 네트워크에 연결하기 위한 장치(LAN 카드)가 있는데, 이를 구별하기 위한 식별번호
: 6바이트(48비트)로 구성된다.
면접을 위한 CS 전공지식
인터넷 프로토콜 스위트
Internet protocol suite
패킷 교환
수업 자료
Network Layer의 PDU를 패킷으로 바꿔야 할 거 같아요! (데이터그램이라고 잘못 적혀있네용)