5/120

김건호·2022년 2월 11일
0

프레임의 종류

ACK

전송 데이터가 올바르게 도착했음을 회신
데이터를 계속 보내면 순서가 밀리는 것을 막기 위해 ACK 응답이오면 다음 패킷을 전송

NAK

전송 데이터가 깨져서 도착했음을 회신
프레임 변형 오류를 해결

순서 번호 기능

데이터의 중복 수신을 막음

타임아웃 기능

프레임 분실 오류 해결

슬라이딩 윈도우(버퍼의 크기) 프로토콜

송신 호스트는 정보 프레임을 순서 번호에 따라 순차적으로 전송
송신 호스트가 관리하는 송신 윈도우는 전송은 되었지만 ACK가 회신되지 않은 프레임을 보관
등장 배경 : 하나를 보내고, ACK를 기다리고 또 하나를 보내면 낭비가 심하기 때문에 여러개를 보내고 한번에 처리하기 위해

흐름 제어

순서 번호

  • 프레임 별로 부여되는 일련 번호
  • 0 부터 임의의 최댓값까지 순환 방식 사용
  • 일반적으로 순서 번호의 최댓값이 송신 윈도우 크기보다 커야 함

윈도우 크기

ACK를 받지 않고 연속으로 전송할 수 있는 프레임의 최대 개수

연속형 전송

ACK 프레임을 받지 않고 여러 프레임을 연속으로 전송
오류 가능성이 적은 환경에서 효율적

고백 N 방식

오류가 발생한 프레임 이후의 모든 프레임을 재전송

선택적 재전송

오류가 발생한 프레임만 재전송

피기배킹

정보 프레임이 응답 프레임의 기능까지 수행
응답 프레임의 전송 회수가 줄어 전송 효율이 좋아짐

  • 정보 프레임 = 정보 프레임 + 응답 프레임

TCP

TCP의 이해

연결 지향

데이터를 교환하기 전에 서로 TCP 연결을 확립해야 함

신뢰성 있는

메시지를 성공적으로 수신했거나 오류를 발생했다는 것을 알림

포트번호

포트

TCP가 데이터를 전달하거나 받을 때, 상호간에 사용하는 데이터의 이동 경로
상위 계층 프로토콜과 하위 계층 프로토콜은 같은 포트를 사용해야 함

  • 0번 ~ 1023번 : well-known port
  • 1024번 ~ 49151번 : registered port
  • 49152번 ~ 65535번 : dynamic port

TCP 헤더 정보

  • Source Port(16bit) : 수신지 포트 번호. 범위는 0~65,355
  • Destionation Port(16bit) : 목적지 포트 번호. 클라이언트가 수신지 호스트를 요청하는 서버라면 대부분 well-known port
  • Sequence Number(32bit) : 신뢰성 있는 연결을 보장하기 위해 전송하는 각 바이트마다 부여한 번호
    송신, 수신이 가진 순서 번호는 서로 다름.
  • Acknowledgment Number(32bit) : 수신하는 노드가 상대편 노트에서 수신 하려는 바이트의 번호(다음 전송시 이 번호를 Sequence Number로 사용하시오). 성공적으로 수신한 마지막 바이트의 순서 번호 +1
  • Data Offset(4bit) : TCP 헤더길이를 4바이트 워드 값으로 나타냄. 헤더의 길이는 20~60바이트
  • Reserved(6bit) : 나중에 사용하려고 예약된 6비트 필드
  • Flags(6bit) : 프로토콜의 동작을 제어하는 데 사용하는 비트 단위의 플래그
플래그설명
URGUrgent, 긴급 처리 데이터가 있음
ACKAcknowledgment, 응답 확인 번호 사용
PSHPush, 데이터를 보낼 때 발생
RSTReset, 정상적 종료가 아니고 강제 종료 시, 연결 재설정
SYNSynchronize, 연결을 초기화 하기 위해 순서 번호 동기화
FINFinish, 데이터 송신 종료
  • window(16bit) : 상대방이 유지해야 하는 바이트 단위의 윈도우 크를 정의. 윈도우의 최대 크기는 65,535바이트
  • Checksum(16bit) : 헤드 부분의 오류 검출
  • Urgent Pointer(16bit) : URG 플래그 설정 시 긴급 데이터의 마지막 바이트의 순서 번호. 이 포인터의 값과 순서 번호의 합으로 계산
  • option(24bit) : 송신자가 수신하기를 원하는 세그먼트의 최대 크기를 나타냄

TCP 연결 과정

연결 설정(3-way Handshaking)
1. 클라이언트에서 SYN과 순서 번호를 서버로 보냄. 이때 클라이언트는 SYN_SENT 상태, 서버는 SYN_RECEIVED 상태
2. 서버는 ACK응답을 보내며, 피기배킹으로 SYN를 보냄.
3. 클라이언트는 ACK응답을 보내며, 클라이언트와 서버는 ESTABLISHED 상태

TCP 데이터 송수신 과정

연결 설정 완료 후
1. 송신 측에서 PSH와 ACK를 보냄(현재 연결이 정상적으로 진행 중, 연결유지를 위해)
2. 수신 측에서는 ACK에 신호번호+1+수신 데이터 바이트 크기를 더해서 보냄

TCP 연결 종료 과정

(클라이언트에서 종료 요청을 보내는 경우, 서버에서 요청을 보내는 경우 반대로 진행)
1.클라이언트에서 FIN요청을 보냄. 이 때, 클라이언트는 FIN_WAIT상태 서버는 CLOSE_WAIT 상태
2. 서버는 FIN요청과 클라이언트에서 보낸 FIN요청에 대한 ACK응답을 보냄. 이 때, 서버는 LAST_ACK 상태
3. 클라이언트는 서버에서 보낸 FIN요청에 ACK응답을 보냄 이 때, 클라이언트는 TIME_WAIT 상태 진입 후 일정 시간 후 CLOSED, 서버는 CLOSED

TCP 흐름 제어

데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

슬라이딩 윈도우

송신 측 컴퓨터는 윈도우 크기에 따라 패킷을 전송하고, 수신측 컴퓨터에서 수신 확인 ACK를 수신하면 ACK에서 요청한 패킷 위치로 송신 윈도우를 오른쪽으로 옮김

UDP

UDP의 이해

비연결 지향 프로토콜
패킷이나 흐름 제어, 단편화 및 전송 보장 등의 기능 등을 제공하지 않음 -> DF가 항상 활성화(파현화가 되지 않기 때문)

UDP 헤더 정보

ARP

주소 결정 프로토콜(Address Resolution Protocol)

ARP 헤더 정보

  • Hardware Type(16bit) : Hardware 길이 필드 설정 제어

  • Operation(Opcode)(16bit)
    ARP 요청 : 0001
    ARP 응답 : 0002
    RARP 요청 : 0003
    RARP 응답 : 0004

    ICMP(Internet COntrol Message Protocol)

    인터넷 제어 메세지 프로토콜
    IP 패킷을 처리할 때 발생되는 문제를 알리거나, 진단 등과 같이 IP 게층에서 필요한 기타 기능들을 수행하기위해 사용되는 프로토콜

    ICMP 주요 메시지 구분

    ICMP 오류 메시지

  • 목적지도달불가 : Type 3
    Network Unreachable : Code 0
    Host Unreachable : Code 1
    Protocol Unreachable : Code 2
    Port Unreachable : Code 3

  • 발신 억제 (Source Quench) : Type 4 표준에서 제외됨

  • 재지정 (Redirect) : Type 5

  • 시간 초과 (Time Exceeded) : Type 11

  • 패킷이 루프를 돌거나 , 과밀 발생 , 타이머 값이 너무 낮게 설정된 경우

  • 매개변수 문제 (Parameter Problem) : Type 12

네트워크 관리 명령어

nbtstat -A

충돌되는 컴퓨터를 찾아주는 명령어
IP 충돌 메시지가 표시되면 컴퓨터를 종료한 후 다른 컴퓨터에서 nbtstat 명령어로 중복된 IP 주소를 사용하는 컴픁 이름을 확인

예시

nbtstat -A 중복된 IP 주소

netstat

시스템에서 TCP 전송 프로토콜의 상태를 표시

netstat -aon | find ":포트번호"

특정 포트를 찾아 표시

netstat -p "프로토콜"

특정 전송 프로토콜의 상태를 표시

netstat a

(소켓 상태 표시)
로컬 호스트에 있는 소켓의 상태를 확인할 수 있음

netstat -an

(모든 연결과 수신 대기 포트 표시)
백도어 해킹 프로그램 등이 설치되어 정보를 빼내지는 않는지 확인할 수 있다 .an 옵션은 주소와 포트 번호를 숫자 형식으로 표시

netstat -e 10

(이더넷 통계 표시)

netstat -r( 알려진 경로의 상태 표시

로컬 호스트의 라우팅 테이블을 표시
라우팅 테이블은 호스트의 알려진 모든 경로의 상태를 확인

netstat -s

s(프로토콜별 통계 표시)
-s 옵션은 IP, ICMP, TCP, UDP 프로토콜에 대한 프로토콜 통계를 표시 통계를 이용하여 프로토콜에 문제가 있는 영역을 확인가능

netstat -e

(내 컴퓨터의 송수신 패킷 표시)

netstat -f

(특정 주소 유형의 패킷에 대한 전송 상태 표시)
특정 주소 그룹의 패킷 전송과 관련된 통계를 확인가능

ping 사이트 주소

원격의 호스트 컴퓨터 , 서버 장비 , 네트워크 장비와 통신이 잘 되고 있는지 확인하는 명령어
Ping 을 실행하면 ICMP 프로토콜에서 지정한 호스트 컴퓨터로 데이터그램을 전송하여 응답을 요청

ping -n count 사이트 주소

(에코 요청 수만큼 통신 테스트)
-n count 옵션은 보낼 에코 요청 수

ping -t 사이트 주소 중지할 때까지 통신 테스트

-t 옵션은 중지할 때까지 지정한 호스트에 ping 실행 중지하려면 Ctrl +C 입력

ping -f -l size 사이트 주소

(전송할 버퍼 크기로 통신 테스트)

  • f 옵션은 패킷 조각화하지 않고 플래그를 설정 라인 테스트용 하는 것이고 , -l size 옵션은 전송할 버퍼 크기를 나타냄

route

서버 장비나 방화벽 장비에 LAN 카드를 여러 개 설치할 때 route 명령을 이용하여 패킷이 전달되는 경로를 확인하거나 지정할 수 있다 . route print 명령어로 라우팅 테이블을 확인 가능

tracert 사이트 주소

최종 수신지 컴퓨터에 도달하기까지 중간에 거치는 라우터 여러개의 경로 및 응답속도를 표시
갑자기 특정 웹사이트와 접속이 느려질 때 tracert 명령어로 내부 네트워크나 회선 구간 등을 확인가능. 또한 전용회선 관리나 장애 복구에도많이 사용

arp -a(MAC 주소 표시 ), arp -s(ARP 항목 추가 ), arp -d(ARP 항목 삭제

ARP(주소 확인 프로토콜)에서 사용하는 인터넷 (IP) 주소에서 물리적 주소로 변환된 값을 확인하고 , 수정(관리자 권한에서 가능)가능
-d 옵션 사용 시, 관리자 모드로 실행해야 함

참고자료 : TCP 헤더 정보, UDP 헤더 정보

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

1개의 댓글

comment-user-thumbnail
2022년 2월 15일

잘 보고 갑니다

답글 달기