아파치 서버
HTTPD 서버 관리와 Web page 관리는 서로 다른 책무이므로 반드시 분리 구성한다.
• Web page 관리자가 시스템 디렉토리에 접근해서는 안된다.
• Web page 관리자 계정 web 계정을 생성하고 홈디렉토리 내에서 관리가 이뤄지도록 한다.
관리자 정보
- 계정 : webmaster(group:web)
- Document Root : /home/httpd
====================================================
webmaster가 root document밖으로 못나가게 하고 webmaster만 접속 가능하게 만들기.
192.168.10.147번에서 설정
groupadd -g 5000 web
useradd -g 5000 -u 5001 webmaster
passwd webmaster
12
dnf list vsftpd
dnf install -y vsftpd
dnf install -y ftp
systemctl start vsftpd.service
systemctl enable vsftpd.service
vi /etc/vsftpd/vsftpd.conf
--------------------------------------
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
--------------------------------------
vi user_list // user_list에 등록된 사람만 접속이 가능
--------------------------------------
webmaster
--------------------------------------
vi /etc/vsftpd/chroot_list
--------------------------------------
root
--------------------------------------
systemctl restart vsftpd
mount --bind /home/httpd/ /home/webmaster/httpd
echo "mount --bind /home/httpd/ /home/webmaster/httpd" >> /etc/rc.d/rc.local
/app/apache/bin/apachectl restart
chown -R webmaster.web /home/httpd/
==========================================================
다중 IP 설정
ip addr add 192.168.10.148/24 dev ens160 // 리부팅하면 없어짐.
/app/apache/bin/apachectl start
192.168.10.146에서
vi /etc/named.conf
--------------------------------------
zone "st10.itc." IN {
type master;
file "st10.itc.zone";
};
--------------------------------------
cp st10.sec.zone st10.itc.zone // 안에 내용 맞게 수정.
systemctl restart named.service
==========================================================
147, 148로 접속하면 각각 다른 화면이 보이게 만들기
(sec, itc로 접속하면 각각 다른 화면 보이게 하기.)
cd /home/httpd/sec
cd /home/httpd/itc
vi /home/httpd/sec/index.html
vi /home/httpd/itc/index.html
vi /app/apache/conf/httpd.conf
--------------------------------------
DocumentRoot "/home/httpd" // 이걸로 수정
<Directory "/home/httpd"> // 이걸로 수정
<VirtualHost 192.168.10.147>
DocumentRoot /home/httpd/sec
ServerName 192.168.10.147
</VirtualHost>
<VirtualHost 192.168.10.148>
DocumentRoot /home/httpd/itc
ServerName 192.168.10.148
</VirtualHost> // 밑에 추가
--------------------------------------
/app/apache/bin/apachectl restart
==========================================================
Web – httpd.conf(가상 호스트)
IP 기반 호스트
<VirtualHost 접속IP>
DocumentRoot 홈디렉토리
ServerName IP또는 도메인명
</VirtualHost>
• <Virtual Host> 항목에는 모든 전역 설정 파라미터가 기술 가능하다.
• 예
<VirtualHost 192.168.10.##2>
DocumentRoot /home/httpd/sec
ServerName 192.168.10.##2
</VirtualHost>
<VirtualHost 192.168.10.##3>
DocumentRoot /home/httpd/itc
ServerName 192.168.10.##3
</VirtualHost>
tcp
복습
윈도우 = rtt안에 보낼수 있는 패킷.
윈도우 안에있는 패킷 → go back n에서 : 전송은 됬지만 확인은 안된 패킷
selective repeat 에서 : send_base이후에 보냈거나, 보낼수있는 모든 패킷
in-order → 시퀀스 넘버가 기다리는 놈이 오면 (그거보다 큰 놈이 오면 out-order)
send_base가 기준이 된다.
ㄴ ack가 안온패킷중에 가장 오래된 패킷
timer → go back n에서 : send_base에만 있다.
selective repeat 에서 : 보낸 모든 패킷에 하나씩 다 있다.
go back n timeout은 send_base에서만 발생함
selective repeat 아무곳에서나 발생함
go back n 윈도우안에있는 모든 패킷을 재전송함.
selective repeat 타임아웃된 패킷만 재전송
go back n : ack(n)까지 잘 받았다.
selective repeat : ack(n)을 잘 받았다.
go back n
n < sendbase: 버림
selective repeat
n < sendbase: 버퍼링
단점
go back n :재전송이 너무 많음
selective repeat : 타이머가 많아서 cpu를 많이 사용함
TCP: overview
point-to-point
• 단일 송.수신자 간에 통신
ㄴ 1대1통신
신뢰적인 in-order byte stream
• Message에 구분이 없다.
ㄴ순서를 보장한다.
ㄴ tcp는 텍스트를 전송하기 위한 프로토콜이라서 모든 데이터 단위는 byte로 한다.(줄여서 워드로 사용할수도 있음.)
ㄴ 어떤 메시지를 주건 무조건 바이트로 받는다. (무조건 텍스트로 생각하고 자른다)
pipelined
• 혼잡제어나 흐름제어를 통해 window size를 제어한다.
혼잡제어 = 센더,(윈도우 사이즈를 네트워크가 혼잡하면 줄인다.)
흐름 제어 = 리시버(윈도우 사이즈의 상한선을 알려준다.)
송,수신측은 buffer를 갖는다
ㄴ 송신쪽 : 재전송을 위해서, 수신쪽 : out-order애들을 위해서
full duplex → 양쪽이 동시에 보낼수있다.
▲ 동일 connection에 양단이 동시에 data를 전송 할 수 있다.
▲ MSS : maximum segment size → (segment에서 app layer data의 최대 크기)
connection oriented
▲ handshake를 먼저 수행한다.
Flow control
▲ sender가 receiver를 압박하지 못하도록 receiver가 전송량을 통제한다.
세그먼트 구조
source port # | dest port # | |||||||
sequence number | ||||||||
acknowledgement number | ||||||||
header length |
not used |
U | A | P | R | S | F | Receive window |
checksum | Urg data pnter | |||||||
Options(variable length) | ||||||||
application data(variable length) |
tcp 헤더 = 20byte = 4byte 5줄
source port = 2바이트
dest port = 2바이트
ㄴ 65535까지 포트가 있을수 있다.
시퀀스 넘버 = 32비트
ack 넘버 = 32비트
header length 필드(워드 단위= 4바이트) = 5워드가 있을거다.
not used = 6비트는 사용 안함
URG = 사용안함.
ACK = 아크날리지 번호 해석해 , 0이면 보지 마세요
PSH = 안씀
RST = 접속을 초기화 합시다.(첨부터 다시해요)
SYN = 3-way handshake 할때 사용. (규정이 없어서 일반적으로 0)
FIN = 접속 끊어요
r,s,f = 상호 베타적인 관계
Receive window = 자신의 리시브 버퍼 사이즈를 여기에 넣어서 보내준다.(흐름제어)
16비트 checksum = 비트가 깨졌는지 안깨졌는지 확인
Urg data = 안씀.
Options = 현재는 아무것도 없다.
라우터는 cpu가 저성능이기때문에, 데이터그램이 크게 보일수있다.
그럼 데이터그램을 라우터에서 쪼개고 여러개 보낸다
합쳐지는건 데스티네이션에서 합쳐진다. (다음 라우터에서는 못 합친다. 합치는기능이 없기 때문에( 패킷이 뒤죽박죽 올수도 있기때문))
seq# 와 ACK
seq#
- Segment의 첫번째 byte의 stream에서의 byte 순서 번호
ㄴ 단위는 글자, 시퀀스번호의 첫번째 값은 난수로 지정됨.
ㄴ 상대적인 시퀀스 넘보를 알려줌.
ACKs:
• 다음에 받을 첫번째 byte의 순서번호
• Cumulative ACK가 가능하다. → 앞쪽에 있는거 다 잘받았어요 : 78번까지 잘 받아써용
TCP의 timeout는 어떻게 설정 할까???
ㄴ tcp는 첫번째 패킷에만 타이머가 있다, 시간은 rtt보다 약간 크게 잡아야한다.
EstimatedRTT(계산된 rtt)는 어떻게 설정 할까???
SampleRTT → 측정한 rtt(편차가 크다.) 이걸로 EstimatedRTT를 계산한다.
: segment가 송신된 시간으로부터 ACK가 도착한 시간간격, 재전송 segment는 무시
EstiamteRTT = (1-a) * EstiamteRTT + a*SampleRTT
a = 0.125
셈플rtt를 12.5퍼만 적용하세요
처음은 SampleRTT : EstimatedRTT 같다고 생각함 → 두번째부터 계산.
약간 크게 잡는다 = 얼만큼 크게 잡을꺼냐?
ㄴ SampleRTT랑 EstimatedRTT의 값의 차가 크면 네트워크가 불안정하다는 소리
값의 차가 작으면 안정하다는 소리
timeout 설정
▲ EstimatedRTT보다 약간의 여유값을 더한 값으로 설정
• SampleRTT의 변화량이 큰경우는 따라서 커져야한다. (반대의 경우도 동일)
▲ DevRTT
: SampleRTT가 EstimatedRTT로 부터 얼마나 벗어나는지에 대한 예
DevRTT = (1-β)* DevRTT + β* |SampleRTT-EstimatedRTT|
(β의 권장값 : 0.25= 25퍼만 적용)
실제 timeout 설정 TimeoutInterval = EstimatedRTT + 4*DevRTT
ㄴ 적당히 계산해서 EstimatedRTT를 더해준 값, rtt값보다 조금 더 크게 잡아서 TimeoutInterval 잡으세요
'kh교육' 카테고리의 다른 글
(20250813035)apache서버,Go-Back-N, Selective Repeat (5) | 2025.08.13 |
---|---|
(20250812034)DNS 서버 구성, tcp (신뢰적인 데이터 통신) (2) | 2025.08.12 |
(20250811033) DNS, tcp(신뢰적인 데이터 통신), 패킷지연,손실 (4) | 2025.08.11 |
(20250808032)다중 도메인서버, 전자서명, PKI 폼,배열 (3) | 2025.08.08 |
(20250807031)DNS서버, 키분배,해쉬함수 (1) | 2025.08.07 |