TCP 포트 상태 설명 ESTABLISHED, TIMEWAIT

4180 단어
http://blog.csdn.net/zdwzzu2006/article/details/7713499
 
TCP 상태 이전 요점 TCP 프로 토 콜 은 이미 구 축 된 연결 에 대해 네트워크 쌍방 이 네 번 악 수 를 해 야 연결 을 성공 적 으로 끊 을 수 있 으 며, 그 중 한 단계 가 없 으 면 연결 이 가사 상태 에 있 고 연결 자체 가 차지 하 는 자원 이 방출 되 지 않 는 다 고 규정 하고 있다.네트워크 서버 프로그램 은 대량의 연결 을 동시에 관리 해 야 하기 때문에 쓸모없는 연결 이 완전히 끊 어 지지 않도록 보장 할 필요 가 있다. 그렇지 않 으 면 대량의 경직 된 연결 은 많은 서버 자원 을 낭비 할 것 이다.많은 TCP 상태 중 가장 주의 할 만 한 상 태 는 두 가지 가 있 습 니 다: CLOSEWAIT 와 TIMEWAIT.   1. LISTENING 상태 FTP 서비스 시작 후 우선 수사 (LISTENING) 상태 입 니 다.
2. ESTABLISHED 상태 ESTABLISHED 는 연결 을 만 든 다 는 뜻 입 니 다.두 대의 기계 가 통신 하고 있 음 을 나타 낸다.
3、CLOSE_WAIT
    상대방 이 자발적으로 연결 을 닫 거나 네트워크 이상 으로 연결 이 끊 기 면 우리 측의 상 태 는 CLOSE 로 변 합 니 다.WAIT 이때 우리 측은 close () 를 호출 하여 연결 을 정확하게 닫 아야 합 니 다.
4、TIME_WAIT
    우리 측은 close () 를 주동 적 으로 호출 하여 연결 을 끊 고 상대방 의 확인 을 받 은 후 상태 가 TIME 로 변 합 니 다.WAIT.TCP 프로 토 콜 규정 TIMEWAIT 상 태 는 2MSL (즉 두 배의 세그먼트 최대 생존 기간) 을 지속 해 낡은 연결 상태 가 새 연결 에 영향 을 미 치지 않도록 확보한다.에 처 하 다,...WAIT 상태의 연결 이 차지 하 는 자원 은 커 널 에서 방출 되 지 않 기 때문에 서버 로 서 가능 한 한 자발적으로 연결 을 끊 지 않 고 TIME 를 감소 시 킵 니 다.WAIT 상태 로 인 한 자원 낭비.
    현재 TIME 를 피 하 는 방법 이 있 습 니 다.WAIT 자원 을 낭비 하 는 방법 은 socket 의 LINGER 옵션 을 닫 는 것 입 니 다.그러나 이 방법 은 TCP 프로 토 콜 이 추천 하지 않 는 것 으로 어떤 경우 에 이 조작 이 오 류 를 가 져 올 수 있 습 니 다.
5、SYN_SENT 상태
   SYN_SENT 상 태 는 연결 요청 을 표시 합 니 다. 다른 컴퓨터 의 서 비 스 를 방문 하려 면 먼저 이 포트 에 동기 신 호 를 보 내야 합 니 다. 이 상 태 는 SYN 입 니 다.SENT, 연결 이 성공 하면 ESTABLISHED 가 됩 니 다. 이때 SYNSENT 상 태 는 매우 짧다.하지만 SYN 을 발견 하면SENT 가 매우 많 고 다른 기계 에 보 내 고 있 습 니 다. 당신 의 기 계 는 충격파 나 충격파 같은 바이러스 에 걸 렸 을 수도 있 습 니 다.이런 바 이러 스 는 다른 컴퓨터 에 감염 되 기 위해 다른 컴퓨터 를 스 캔 해 야 한다. 스 캔 과정 에서 스 캔 할 모든 컴퓨터 에 동기 화 요청 을 해 야 한다. 이것 도 많은 SYNSENT 의 이유.TCP 프로 토 콜 에 의 해 정 의 된 세 번 의 악수 로 연결 을 끊 는 규정 에 따라 socket 이 자발적으로 닫 힌 쪽 socket 은 TIME 에 들 어 갑 니 다.WAIT 상태, TIMEWAIT 상 태 는 MSL (Max Segment Lifetime) 2 개 를 지속 하 며, Windows 에 서 는 기본적으로 4 분, 즉 240 초, TIMEWAIT 상태 에서 socket 을 회수 하여 사용 할 수 없습니다. 구체 적 인 현상 은 대량의 짧 은 연결 을 처리 하 는 서버 에 대해 서버 가 클 라 이언 트 의 연결 을 자발적으로 닫 으 면 서버 측 에 TIME 이 대량으로 존재 합 니 다.WAIT 상태의 socket 은 심지어 Established 상태 에 있 는 socket 보다 많 고 서버 의 처리 능력 에 심각 한 영향 을 주 며 사용 가능 한 socket 을 다 소모 하여 서 비 스 를 중단 합 니 다. TIMEWAIT 는 TCP 프로 토 콜 에 의 해 재배 치 된 socket 이 이전에 남아 있 던 지연 메시지 의 영향 을 받 지 않도록 하 는 메커니즘 으로 필요 한 논리 적 보증 입 니 다. windows 기 계 는 HKEY 에 설치 되 어 있 습 니 다.LOCAL_MACHINE\\SYSTEM\\Current Control Set\Service\Tcpip\\Parameters, 오른쪽 단 추 를 누 르 면 TcpTimed WaitDelay 라 는 DWORD 키 를 추가 하고 60 으로 설정 하여 TIME 단축WAIT 대기 시간 ubuntu 기기 설정
vi/etc/sysctl.conf
파일 편집, 다음 내용 추가: net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
 
그리고 집행  /sbin/sysctl -p  매개 변 수 를 유효 하 게 하 다.
 
net.ipv4.tcp_syncookies = 1 SYN Cookies 를 여 는 것 을 의미 합 니 다.SYN 대기 열 이 넘 칠 때 cookies 를 사용 하여 처리 합 니 다. 소량의 SYN 공격 을 예방 할 수 있 습 니 다. 기본 값 은 0 으로 닫 음 을 표시 합 니 다.
net.ipv4.tcp_tw_reuse = 1 재 활용TIME - WIT sockets 를 새로운 TCP 연결 에 다시 사용 할 수 있 도록 합 니 다. 기본 값 은 0 입 니 다. 닫 기 를 표시 합 니 다.
net.ipv4.tcp_tw_recycle = 1 TCP 연결 을 여 는 TIME - WAIT sockets 의 빠 른 회 수 를 표시 합 니 다. 기본 값 은 0 입 니 다. 닫 기 를 표시 합 니 다.
net.ipv4.tcp_fin_timeout 시스템 기본 TIMEOUT 시간 수정
시스템 TCP 연결 자원 명령 보기
netstat 
netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
일반적인 상황 에서 시스템 의 socket 자원 은 기본적으로 5000 개 입 니 다.(비공 식) TCP 프로 토 콜 에 TIMEWAIT 상태 에는 두 가지 이유 가 있 습 니 다.지난번 연결 에 있 는 가방 이 길 을 잃 은 후에 다시 나타 나 는 것 을 방지 하고 새로운 연결 에 영향 을 줍 니 다 (2MSL 을 거 쳐 지난번 연결 에 있 는 모든 중복 가방 이 사라 집 니 다) 2.신뢰 할 수 있 는 TCP 연결 닫 기.주동 적 으로 닫 는 쪽 에서 보 내 는 마지막 ack (fin) 을 잃 어 버 릴 수 있 습 니 다. 이때 수 동적 으로 fin 을 다시 보 냅 니 다. 이때 주동 적 으로 CLOSED 상태 에 있 으 면 ack 이 아 닌 rst 에 응답 합 니 다.그래서 주동 자 는 TIMEWAIT 상태, CLOSED 가 아 닙 니 다.

좋은 웹페이지 즐겨찾기