Cheatsheet: Difference between revisions
→Redirect Stderr
(→BGP) |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 312:
= VPN Messages =
*;Phase 1 - Main Mode
Line 326 ⟶ 325:
ID,Accepted Proposal,DH Key,Nonce,ID Hash
ID Hash
*;Phase 2 - Quick Mode
Ph1 Hash,Message ID,Proposal List,Nonce, DH Key,Proxy-ID
Ph1 Hash,Message ID,Accepted Proposal,Nonce,DH Key,Proxy-ID
Ph1 Hash,Message ID,Nonce
= HTTP =
Line 380 ⟶ 369:
* Supports OPTIONS, PUT, DELETE, TRACE, CONNECT request methods
<br />
;HTTP/1.1 vs HTTP/2
* HTTP/2 Supports Page load speed improvements through:
'''Compression of request headers'''
'''Binary protocol'''
'''HTTP/2 Server Push''': capability allows the server to send additional cacheable information to the client that isn’t requested but is anticipated in future requests.
'''Request multiplexing over a single TCP connection'''
'''Request pipelining'''
'''HOL blocking (Head-of-line) — Package blocking'''
;HTTP Request Methods
Line 461 ⟶ 460:
#Client sends the second half of the Diffie-Hellman exchange, Computes the session keys; Switches to encrypted communication
#Server computes the session keys; Switches to encrypted communication.
<br>
; SSLv1 vs TLS 1.0 vs TLS1.3
SSL 2.0 - Deprecated
SSL 3.0 - Deprecated
TLS 1.0 - Deprecated
TLS 1.1 - Deprecated
TLS 1.2 -
TLS 1.3 -
= NetScaler =
Line 530 ⟶ 538:
[[File:OSFF LSA 2.png|center]]
* OSPF path selection: O > O*IA > O*E1 > O*E2 > N1 > N2.
* “area range” summarize type 3 LSA’.
* “summary-address” summarize type 5 & 7 LSA’s.
Line 537 ⟶ 545:
= BGP =
* Route Selection Criteria
<center>
{| class="wikitable"
|-
! Attribute !! Which is better !!
|-
|Next Hop reachable || Route cannot be used if next hop is unreachable || Well-known Mandatory
|-
|Weight || Bigger; value local to the router; Cisco proprietary; default is 0 for all routes not originated by local router ||
|-
|Local Preference || Bigger; used within AS and exchanged bw iBGP routers; default is 100 || Well-known discretionary
|-
|Locally Injected (Originate) ||
|-
|AS Path Length || Smaller; e.g: AS path 1 2 3 is preferred over AS path 1 2 3 4 5 || Well-known Mandatory
|-
|Origin || Prefer
|-
|MED(Metric) || Smaller; used to advertise to neighbors how they should enter your AS; propagated to all routers within the neighbor AS but not passed along any other AS || Optional non-transitive
|-
|Neighbor Type || Prefer eBGP over iBGP ||
|-
|IGP Metric to Next Hop || Smaller; Prefer the path within the AS with the lowest IGP metric to the BGP next hop ||
|-
|Oldest path || Prefer the path that we received first ||
|-
|Router ID || Prefer the path with the lowest BGP neighbor router ID (Manually conf > Highest Loopback IP address > Highest Interface IP address) ||
|-
|Neighbor IP address || Prefer the path with the lowest neighbor IP address ||
|}
</center>
<br />
Line 932 ⟶ 949:
ls > file.log 2>&1 OR ls &> file.log
ls > file.log 2> /dev/null
=== System Calls ===
{{UC}}
= Sorting Algorithms =
It is a good default choice.
It tends to be fast in
* Heapsort
The Linux kernel uses heapsort instead of quicksort for both of those reasons.
* Merge sort
It is a good choice if you want a stable sorting algorithm.
It can easily be extended to handle data sets that can't fit in RAM where the bottleneck cost is reading and writing the input on disk, not comparing and swapping individual items.
* Radix sort
It looks fast, with its O(n)O(n)O(n) worst-case time complexity.
If you're using it to sort binary numbers, then there's a hidden constant factor that's usually 32 or 64 (depending on how many bits your numbers are).
That's often way bigger than O(lg(n))O(\lg(n))O(lg(n)), meaning radix sort tends to be slow in practice.
* Counting sort
It is a good choice in scenarios where there are small number of distinct values to be sorted.
This is pretty rare in practice, and counting sort doesn't get much use.
* Which sorting algorithm has best asymptotic run time complexity?
= Python =
* Regex
re.match() => Matches Beginning
re.search() => Matches Anywhere
re.findall() => All Matching Objects
re.sub('[ES]', 'a', s) => Substitute
* Lists
* Dictionary
* File operations
Using Open:
f = open('/etc/passwd')
f.read(5)
f.close()
Using With Open(better, auto closes the file):
with open('/etc/passwd') as f:
for line in f:
print(line)
* Class
* OS Interaction:
import os
os.system("date")
import os
f = os.popen('date')
now = f.read()
print("Today is ", now)
import subprocess
subprocess.call(["ls", "-l", "/etc/resolv.conf"])
import subprocess
p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
print("Today is", output)
= SMTP =
HELO or EHLO (Hello)
MAIL FROM
250 OK reply code
RCPT TO (Recipient To)
250 OK reply code
DATA
345 reply code
250 OK code
QUIT
221 code
RSET (Reset)
SMTP errors:
4.X.X Persistent Transient Failure
5.X.X Permanent Error:
|