네트워크 관련 프로토콜에 대해 이야기하기
TCP/IP 참조 모델은 컴퓨터 네트워크의 할아버지 ARPANET 과 후속 인터넷에서 사용하는 참조 모델입니다. ARPANET 은 미국 국방부 DoD(U.S.Department of Defense) 가 후원하는 연구 네트워크입니다. 점차적으로 그것은 임대한 전화선을 통해 수백 개의 대학과 정부 부문을 연결했다. 무선 네트워크와 위성이 등장했을 때 기존 프로토콜과 연결될 때 문제가 발생했기 때문에 새로운 참조 아키텍처가 필요합니다. 이 아키텍처는 두 가지 주요 프로토콜이 나타난 후 TCP/IP 참조 모델 (TCP/IP 참조 모델) 이라고 합니다. 바이두 백과사전의 한 구절을 인용하다.
1. 애플리케이션 계층, (프로토콜 http)?
2. 전송 계층 (TCP)
3.? 네트워크 계층 (ip)
4. 링크 계층 (네트워크 등)
? A: 3g 4g 5g---매핑-----gt;; 링크 계층
1. 프레임 데이터 링크 계층의 패킷을 나타내는 데 사용되는 단위
2. 슬라이스는 IP 의 데이터 단위
3. 세그먼트는 Tcp 데이터 스트림의 정보 를 나타냅니다 -응? I am Android (Tcp 첫)
IP 계층 (네트워크 계층) 에 패키지 전달. 추가 IP 패킷 1 부. -응? I am Android (Tcp 첫 번째) (IP 첫 번째)
데이터 링크 계층에 이더넷 패킷 첫 번째 추가. I am Android (Tcp 첫 번째) (IP 첫 번째) (이더넷 첫 번째)
이후 관련 전송을 위해 물리적 계층에 전달:
사용자 b 수신 메시지:
IP 계층 (네트워크 계층) I am Android (Tcp 첫 번째)
Tcp 계층 (전송 계층) I am Android?
이전 레벨 입고. -응? I am Android.
단일 책임 원칙
? TCP 는 데이터를 송수신하기 전에 상대방과 신뢰할 수 있는 연결을 설정하고, 연결을 설정하는 3 번의 악수, 연결을 끊는 4 번의 손을 흔들어야 하는 연결 지향 신뢰할 수 있는 프로토콜입니다. UDP 는 연결되지 않은 통신 프로토콜로, 데이터 전송 전에 소스와 터미널이 연결되지 않고 발신자가 가능한 한 빨리 데이터를 네트워크에 던지고 수신측은 메시지 대기열에서 메시지 세그먼트를 읽습니다.
IP 주소의 역할은 주로 주소 지정입니다. (IP 주소 (네트워크 계층): 네트워크 또는 호스트에 논리적 주소를 지정하여 MAC 주소를 구분합니다. 마음대로 변경하다. Mac 주소 (데이터 링크) 는 변경할 수 없음)
예:
회사에는 두 개의 건물이 있습니까?
A 빌딩: a (통신 서브넷) 와 b (통신 서브넷) 를 LAN 에 연결하는 두 개의 라우터가 있는 통신 서브넷
B 빌딩이 있습니다
-응? B 도 자체 여러 컴퓨터로 구성된 서브넷
현재 a 층에 a 시스템 (IP 주소: 192.168.1.2)
B 층에 b 시스템 (IP 주소: 10) 이 있다 그래서 어떤 서브넷이 192.167 ...-"해당 라우터
에게 보내질 서브넷이 192.167.1.2 인지 어떻게 알 수 있을까요?
우리 서브넷에서 각 컴퓨터는 라우터에 보관해 다른 시스템에 내 IP 주소와 MAC 주소가 얼마인지 알려줘야 한다. 그런 다음 해당 컴퓨터에 보냅니다. 라우터는 컴퓨터마다 한 부씩 보냈지만, 네트워크 카드는 패킷을 받고 패킷의 MAC 주소가 기본 MAC 주소와 같은지 확인하는 것과 달리 직접 폐기한다.
그래서 여기서 네트워크 스니핑에 대한 사이버 공격이 발생했습니다.
같은 서브넷에 있습니다. 네트워크 카드가 데이터를 받지 못하게 하여 얻은 데이터를 미리 모두 잡는다.
표준 지정 포트 번호: 0 ~ 1023? 1024 ~ 49151
서버의 프로그램 설정 포트 번호입니다.
클라이언트. 운영 체제는 49152-65535 를 할당합니다.
따라서 소스 IP 주소, 대상 IP 주소, 프로토콜 번호, 소스 포트 번호 및 대상 포트 번호 5 가지 요소를 통해 통신을 식별할 수 있습니다.
여기서 TCP:
기능:
접속 지향,
신뢰성,
에 초점을 맞추겠습니다 애플리케이션 계층에 네트워크를 통해 전송되는 일련의 메시지 (전송 계층, 네트워크 계층 등) 가 있다고 가정해 봅시다. 사용자가 큰 데이터를 전송한다면 어떨까요? 사용자가 보낸 데이터가 손실되지 않도록 하려면 어떻게 해야 합니까? 여기서는 이 큰 데이터를 분할해야 한다. IP 계층은 슬라이스로 분할된다. 일반적으로 이더넷은 1046 바이트를 받고, 1046 바이트로 분할한 다음, 종단으로 전송한다. 이 경우 문제가 발생했다. 나는 원래 큰 데이터였다. 지금 전송되고, 여러 조각으로 잘렸다. 그런 다음 TCP 에서 재전송 시간 초과 및 응답 확인 메커니즘을 제시하여 데이터 무결성을 확보했습니다. 만약 상대방이 줄곧 상대방의 소식을 받지 못한다면, 그것은 계속 기다리지 않고, 한 시간 후에 한 번 재전송한다면, 이 시간은 어떻게 결정됩니까? 운영 체제는 설계 시 RTT 메커니즘, 즉 왕복 지연 메커니즘을 도입할 것입니다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 예술명언) 한 패킷이 내 쪽 끝에서 다른 쪽 끝으로 전송된 다음 상대방의 응답을 받아 이 시간을 왕복 지연으로 한다. 운영 체제는 최신 왕복 지연에 대해 자체 내부 RTO 를 다시 계산합니다. 이 재전송 시간 초과는 고정되어 있지 않다.데이터 정렬: 한 조각으로 분할한 후, 상대방이 완전한 패킷을 구성하기 전에 순서를 명확히 해야 하기 때문에 네트워크 프로토콜이 이 끝에서 정렬됩니다. 종단간 완전한 조립을 용이하게 합니다.
흐름 제어 (슬라이딩 창): 내 통신은 데이터 처리 능력이 다릅니다. 발신자는 전송만 하고,
전이중: 통신의 양쪽 끝에서 수신자와 서버측에서 동시에 종단간 데이터를 보내거나 동시에 종단간 데이터를 수신할 수 있습니다.
클라이언트 (connect):
1. SYN 의 메시지를 서버에 먼저 보냅니다 (SYN = 1 seq = 23412). 클라이언트 상태: SYN_SENT
2. 서버가 메시지를 받으면 클라이언트에 적절한 응답을 합니다 (SYN = 1. ACK = 1, ack? = 23413 seq = 6478) 서버측 상태: SYN_RCVD
3. 클라이언트가 메시지를 받은 후 확인: ACK 가 1 입니까? Ack 는 23413 입니까? , 클라이언트는 서버가 내 SYN = 1 seq = 23412 메시지를 받았음을 확인했습니다. 서버에 응답
4. 클라이언트 응답 서버 ACK = 1, ack =6479,? 클라이언트 상태: ESTABLISHED
5. 서버가 클라이언트의 메시지를 받은 후. 서버 측 상태: ESTABLISHED
Tcp 는 접속 지향적이므로 양측 모두 접속 설정 (유지 관리 일련 번호) 을 확인해야 합니다.
SYN 플러드 공격: 원래 주소를 위조한 대량의 공격 메시지가 네트워크가 있는 포트를 통해 전송되어 서버측의 반개접속 대기열이 꽉 차서 다른 사용자가 액세스할 수 없게 됩니다.
원칙: 공격자 클라이언트는 가짜 IP 주소를 사용하여 서버에 요청을 합니다 (첫 번째 핸드셰이크, 서버 응답의 메시지는 실제 클라이언트로 절대 전송되지 않음, 서버는 클라이언트의 세 번째 핸드셰이크 (절대 없을 것) 를 기다리고, 서버는 이러한 반개방 연결을 기다리는 동안 자원을 소모합니다.
2. 지연 TCB 할당 방법
3. 방화벽
첫 번째 클라이언트가 클론 액티브 종료 요청을 보내고 fin = 1seq = 98745 클라이언트: Fin_wait_1
클라이언트 응답: ack = 1 ack = 98756--gt; CLOSE_WAIT?
클라이언트가 서버 요청을 받았습니다.-"클라이언트? Fin_wait_2
서버가 메시지를 보냅니다. fin = 1 seq = 76432-"close
클라이언트가 서버 요청을 받았습니다 Ack = 76433?
서버-----gt; CLOSED
클라이언트 TIME_WAITING 은 얼마 동안 지속됩니까? : 2 * MSL-----gt; 클라이언트 CLOSED
Tcp 는 양방향 (클라이언트와 서버측에서 서로 요청을 보내고 받을 수 있음) 이기 때문에 둘 다 종료 및 연결을 확인해야 합니다.
MSL: 최대 메시지 세그먼트 수명 (최대 생존 기간 RFC 는 2 분 시스템 30S 로 정의됨); TIME_WAITING 실제 1-4 min
서버측 메시지 전송-"클라이언트가 응답해야 합니다. 인터넷 분실, 서버쪽 재발송.
포트 충돌:
a: 8080 포트?
b: 8080 포트
A 가 즉시 닫히면 b 신청이 도착했고 서버가 아직 발송되고 있어 받지 못했다. B 한테 받았어요.
wireshark? Tcpdump ..