우리는 무엇인가 주고받을 때 어떤 것을 줄 것인지, 어떤 것을 받을 것인지를 보통 약속을 한다.
예를들어 아이스크림을 받기 위해서는 우리는 아이스크림에 해당되는 금액을 지불해야한다.
이 절차는 사회적 약속이다.
마찬가지로 네트워크를 통해 데이터를 주고 받을 때도 미리 정해진 약속이 있다.
그 약속을 보통 계층별로 나눠 정했는데 우리는 그 약속들의 집합을 TCP/ IP 4계층 또는 OSI 7계층으로 설명한다.
계층 구조
TCP/IP는 인터넷의 표준 프로토콜로 개발되었으며, 실질적인 통신을 위해 사용된다.
OSI 7계층은 이론적인 참조 모델로 개발되어 실제 통신에는 사용되지 않지만, 네트워크 기술 및 프로토콜의 표준화를 위해 사용된다.
- TCP / IP 애플리케이션 계층 = 애플리케이션 계층 + 프레젠테이션 계층 + 세션 계층
- TCP / IP 링크 계층[네트워크 엑세스 계층] = 데이터 링크 계층 + 물리 계층
- TCP / IP 인터넷 계층 = 네트워크 계층
이렇게 계층을 나눈 이유는 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되어있다.
A. 응용 계층 [ Application Layer]
응용 계층은 FTP, HTTP, SSH, SMTP, DNS, DHCP 등 우리와 친근한 응용 프로그램들이 사용하는 프로토콜 계층이며
웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층이다.
1. FTP [File Transfer Protocol]
- 파일을 전송하는데 사용되는 프로토콜
2. SSH [Secure Shell]
- 네트워크를 통해 데이터를 안전하게 받기 위한 프로토콜
- 데이터를 암호화하여 전송함으로써 네트워크 상에서의 도청이나 데이터 조작을 방지한다.
- 원격 로그인이나 원격 명령어 실행, 파일 전송 등에 사용된다.
3. HTTP [Hypertext Transfer Protocol]
- www위한 데이터 통신의 기초이자 웹사이트를 이용하는데 쓰는 프로토콜
4. SMTP [Simple Mail Transfer Protocol]
- 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
5. DHCP [Dynamic Host Configuration Protocol]
- IP주소 및 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- 신뢰할 수 있는 IP 주소 구성
- DHCP 철자 오류와 같은 수동 IP 주소 구성에 의해 발생 하는 구성 오류를 최소화
- 동시에 둘 이상의 컴퓨터에 IP 주소를 할당 하 여 발생 한 충돌을 해결한다.
- 네트워크 관리 비용 감소.
- 자동화 된 TCP/IP 구성
- DHCP 옵션을 사용 하 여 추가 TCP/IP 구성 값의 전체 범위를 지정
6. DNS [Domain Name System]
- 도메인 이름과 IP주소를 매핑해주는 서버
- www.hanamon.kr 을 입력하면
- [Root DNS] -> [.kr DNS] -> [.hanamon DNS] -> [.www DNS] 과정을 거쳐
- 완벽한 주소를 찾아 IP주소로 매핑한다.
- 이렇게 하면 IP 주소가 변경되어도사용자들은 똑같은 도메인 주소로 서비스를 이용할 수 있다.
B. 전송 계층 [ Transfer Layer ]
송신자와 수신자를 연결하는 통신 서비스를 제공하며 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다.
1. TCP [ Transmission Control Protocol ]
- 순서를 보장
- 속도가 UDP에 비해 다소 느림
- 보내기전 연결을 형성하는 가상회선 패킷 교환 방식을 사용
- 흐름제어 , 혼잡제어
- 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
- 신뢰성이 높음
2. UDP [ User Diagram Protocol ]
- 순서를 보장하지 않음,
- 신뢰성이 낮음
- 비연결성
- 수신여부를 확인하지 않으며 단순히 데이터만 주는 데이터그램 패킷 교환 방식
3-way handshake
1.SYN
- 클라이언트에서 서버로 클라이언트의 ISN[TCP 연결 첫번 째 패킷에 할당된 임의 시퀀스 번호] 을 담아 SYN을 보낸다.
- 그림에서 seq: 100에 해당한다.
2. SYN + ACK
- 서버는 클라이언트에서 보낸 SYN을 수신한다.
- 서버의 ISN와 클라이언트의 ISN+1을 승인번호로 클라이언트에게 보낸다.
- 그림에서 seq: 200 [서버 ISN], ack: 101 [승인번호 = 100 + 1]에 해당한다
3. ACK
- 클라이언트는 서버의 ISN +1한 값을 승인번호를 담아 ACK를 서버에 보낸다.
- 그림에서 seq: 101[서버에서 받은 ack], ack: 201 [승인 번호 = 200 +1]
4-way handshake
- 클라이언트에서 서버로 FIN 플래그를 보내고 FIN_WAIT_1 상태로 서버의 응답을 기다린다.
- 서버는 클라이언트로 ACK를 보낸후 CLOSE_WAIT 상태로 전환한다.
클라이언트는 서버 ACK를 받으면 FIN_WAIT_2로 변경된다. - 서버는 ACK를 보낸 후 일정 시간 이후 클라이언트에게 FIN 플래그를 보낸 후 LAST_ACK 상태가 된다.
- 서버로 부터 FIN을 받으면 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내고
서버는 ACK를 받으면 CLOSED 상태가 된다.
이후 클라이언트는 일정 시간 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원 연결이 해젠된다.
여기서 TIME_WAIT은 왜 존재할까?? 이유는 크게 2가지다.
- 지연 패킷이 발생하여 패킷이 뒤늦게 도착했을 경우를 대비
- 연결이 닫혔는지 확인하기 위해서, 만약 LAST_ACK 상태에서 닫히면 새로운 연결을 . 할때 LAST_ACK
상태이므로 접속오류가 발생 - OS마다 기다리는 시간차이가 있다. 우분투는 60초, 윈도우는 4분 정도로 설정되어있다.
SYN: SYNchronization의 약자, 연결 요청 플래그
ACK: ACKnowledgement의 약자, 응답 플래그
ISN: Initical Sequenece Number의 약어, 초기 네트워크 연결을 . 할때 할당된 32비트 고유 시퀀스 번호
FIN: 연결 해제. 세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 의미한다.
C. 인터넷 계층 [ Internet Layer ]
네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
송신측의 전송계층에서 데이터를 받으면 목적지를 특정하는 IP주소 등을 IP 헤더에 붙여 링크계층으로 전달
상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 갖고있다.
1. IP [Internet Protocol]
- 목적지까지의 경로를 보고 가장 빨리 전달할 수 있는 경로 설정
2. ICMP [ Internet Control Message Protocol ]
- IP를 도와 네트워크 층에서 발생할 수 있는 오류를 제어
3. ARP [ Address Resolution Protocol ]
- 네트워크 상에서 IP 주소를 물리적 네트워크 주소 [MAC 주소] 로 매핑시키기 위해 사용되는 프로토콜
4. RARP [ Reverse Address Resolution Protocol ]
- RARP는 MAC주소를 IP주소로 변환해주기 위해 사용되는 동적 매핑 프로토콜
D. 링크 계층 [ Link Layer ]
전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층
네트워크 접근 계층이라고도 한다.
참고
'CS > Network' 카테고리의 다른 글
HTTP [ HTTP Version, HTTPS ] (1) | 2024.09.20 |
---|---|
TCP / IP [송수신 과정, 캡슐화, PDU] (0) | 2024.09.20 |
HTTP [HTTP Response] (0) | 2024.09.18 |
HTTP [HTTP Request] (0) | 2024.09.17 |
HTTP [정의 및 구성 요소] (1) | 2024.09.16 |